基于Apache+PHP+Mysql网站SQL注入防护探讨

2017-02-13 16:22李俊锋
网络空间安全 2016年12期
关键词:网站

【 摘 要 】 随着互联网+时代的到来,中小企业网站雨后春笋,考虑成本和建站周期,一般都是基于Apache+PHP+Mysql架构。越来越多的网络访问通过Web界面进行操作,Web安全已经成为互联网安全的一个热点,基于Web的攻击广为流行,SQL注入、跨站脚本等Web应用层漏洞的存在使得网站沦陷、页面篡改、网页挂马等攻击行为困扰着网站管理者并威胁着网站以及直接用户的安全。论文就SQL注入作一些归纳总结。

【 关键词 】 网站;SQL;注入防护

【 中图分类号 】 TP392

【 文献标识码 】 A

Based on the Apache+PHP+Mysql SQL Injection Site Protection to Discuss

Li Jun-feng

(Zigui County Human Resources and Social Security Information Center HubeiYichang 443600)

【 Abstract 】 With the advent of the era of Internet+, websites of small and medium-sized enterprises sprung up. Considering the cost and build cycle, they are generally based on Apache+PHP+Mysql architecture. More and more network access via a Web interface. Web security has become a focus of the Internet security. Web-based attack is popular.The Existence of The Web application layer holes such as SQL injection and cross-site scripting vulnerabilities has been affecting website managers and threatening the safety of site and direct user.They make website fall, tampered with, Web page hang a horse. Engaged in small and medium-sized website development and construction management for many years, accumulated certain experience,this article will make a few generalizations for SQL injection. For reference only.

【 Keywords 】 website; sql; injection protection

1 引言

SQL注入技术是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,提交精心构造的数据库语句,使其反馈一些有用的数据,去欺骗数据库,最终达到欺骗服务器执行恶意的SQL命令。假如只有Web服务器的话,是没法进行的。

2 SQL注入形式

常用的SQL注入手法有两种:一种是猜测,让数据库暴出用户名、密码等信息;另一种直接绕过认证,取得权限。相对应防护,就必须禁止特殊数据的提交或将特殊提交的数据修改。

3 Apache+PHP+Mysql架构网站威胁风险等级

高风险:跨站脚本攻击、拒绝服务。

中风险:内容欺骗、信息泄露、远程信息泄露、资源位置可预测。

其它(应用)风险:安全配置错误、不安全的加密存储、没有限制URL访问、敏感数据泄露、缺乏功能层次的访问控制。

4 常见SQL注入漏洞及防护对策。

4.1 客户端攻击类型

4.1.1 跨站脚本攻击

指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息或在终端用户系统上执行恶意代码。 本漏洞属于Web应用安全常见漏洞,跨站脚本攻击所带来的主要问题包括账号劫持、恶意脚本执行、蠕虫传播、信息窃取、拒绝服务、浏览器重新定向、控制用户设置。

推荐措施:实施安全编程技术,确保正确过滤用户提供的数据,防以可执行的格式向终端用户发送注入的脚本。 对于开发应用,要尽可能使用严格测试发布的模版。

4.1.2 内容欺骗

参数污染漏洞。HTTP参数污染攻击指的是攻击者在请求中构造多个参数名相同的参数,由于不同的服务器端脚本语言在处理相同参数名的参数时,可能选用的参数值与参数的先后顺序有关。 应对措施:对于输入参数为字符串类型的参数,校验参数值中是否包含可用于分割参数的分隔符,比如& 、%等。

点击劫持。这是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。防护措施:修改Web服务器配置,添加X-Frame-Options响应头。

赋值有三种。(1)DENY:不能被嵌入到任何iframe或者frame中;(2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;(3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。apache可配置http.conf。

不安全的HTTP方法。目标Web服务器配置成允许一个(或多个)HTTP 方法(DELETE、SEARCH、COPY、MOVE等)。这些方法允许客户端操纵服务器上的文件,有可能允许未授权的用户对其进行利用,修改服务器上的文件,要严格访问权限,如认证方法,认证需要的用户名、密码。

4.2 逻辑攻击类型:拒绝服务

PHP Web表单哈希冲突拒绝服务漏洞。PHP是英文超级文本预处理语言,查阅PHP官方资料,PHP 5.4之前版本在计算表单参数哈希值的实现上没有提前限制哈希冲突,存在拒绝服务漏洞,通过发送小量的特制Webform表单张贴到受影响应用程序,攻击者可利用此漏洞导致使用PHP的站点失去响应正常请求的能力。

PHP multipart/form-data 远程DOS漏洞。PHP解析multipart/form-data http请求的Body Part请求头时,重复拷贝字符串导致DOS。远程攻击通过发送恶意构造的multipart/form-data请求,导致服务器CPU资源被耗尽,从而远程DOS服务器。

目前PHP已经发布了升级补丁以修复这类安全问题。

4.3 信息泄露类型

数据库服务敏感信息泄露。由于Web应用程序没有正确处理用户输入和处理数据库异常导致页面信息中包含数据库错误信息,通过数据库错误信息可以得知后台数据库类型,甚至数据库结构,为进一步SQL注入攻击提供有利信息。开发采用安全编程方法捕获数据库异常,不要显示数据库服务器错误信息,有效过滤用户输入,限定数据类型,定义接收数据的最长和最短长度。

资源位置可预测泄露。较低的安全保护,攻击者可以通过该文件获取敏感信息或者进入网站后台,进行恶意操作。加强访问此类文件的认证和使用安全,删除修改为不可预测的文件名目标Web应用表单密码泄露。密码类型输入启用了自动完成操作,如果密码类型Input标签的“autocomplete”属性值为“on”,或者“autocomplete”属性未设置,则认为存在漏洞。因此,脚步本增加

基于HTTP连接的登录请求泄露。目标应用程序使用HTTP连接接受客户端的登录请求,如果登录请求数据没有加密处理,有可能被攻击者嗅探到客户端提交的请求数据,请求数据中一般包含用户名和密码,导致信息泄露。

PHPinfo()函数信息及PHP错误信息泄漏。PHPinfo()函数返回服务器的配置信息,应用本身存在问题或者发送请求时提交的参数不合法导致PHP错误信息(包含错误发生的位置、路径和文件),这些敏感信息会帮助攻击者展开进一步的攻击。对于开发人员,增强错误处理和参数检查。 修改服务器的PHP配置的参数display_errors=Off, 限制对PHPinfo()函数的调用。

4.4 PHP配置带来的风险

allow_url_fopen。该指令开启允许从远程位置(网站或FTP服务器)进行数据检索。结合其它漏洞可被利用来进行远程文件包含攻击。在PHP.ini或.htaccess文件中禁用allow_url_fopen。

display_errors。该指令开启时,当用户浏览网站时,如果PHP出现内部错误,会将错误信息返回到浏览器。这些信息通常包含您的Web应用程序的敏感信息。在PHP.ini或htaccess文件中禁用display_errors。

open_basedir。该指令设置可以限制PHP只能打开指定目录树中的文件,如果文件不在指定的目录下,PHP将拒绝打开它。open_basedir能很好地保护来自远程文件包含漏洞的攻击,对目录遍历攻击也能起到一定的防范。在PHP.ini文件中配置: open_basedir = your_application_directory。

cookie中HttpOnly属性。缺少则认为存在漏洞,在PHP.ini中设置session.cookie_httponly =1或PHP代码中加入。

4.5 Web应用漏洞风险

主要是存在应用程序测试用例、目标服务器存在系统路径信息泄露、存在用户名或者密码信息泄露等。这些要所根据实际应用情况判定和处理。

5 结束语

SQL注入是一件头痛的事。避免SQL注入漏洞,要从源头起,对网站开发的关键人员进行安全编码方面的培训,在开发过程就避免漏洞的引入能起到事半功倍的效果。

参考文献

[1] 黄慧芳.PHP+MySQL项目开发权威指南[M].北京:中国铁道出版社,2013.

[2] 列旭松.PHP核心技术与最佳实践[M].北京:机械工业出版社,2013.

[3] 钱雪.MySQL数据库技术与实验指导[M].北京:清华大学出版社,2012.

[4] 王曼.设计动态网站的最佳组合:Apache+PHP+MySQL[J].电子制作,2014,7X,p82.

作者简介:

李俊锋(1969-),男,湖北秭归人,专科,计算机工程师,从事人力资源和社会保障信息化规划建设;主要研究方向和关注领域:大型数据库管理应用、中小网站开发建设管理。

猜你喜欢
网站
废弃家电资源回收资源整合网站建设
试论电子商务网站的平面设计原则
河洛文化旅游资源外宣网站日译现状调查及对策研究
文管综合实践教学中心网站建设与维护