SQL注入攻击的危害性比较大,现在已经严重影响到程序的安全,所以必须从网站设计开始来防御SQL注入漏洞的存在。在防御SQL注入攻击时,程序员必须注意可能出现安全漏洞的地方,其关键所在就是用户数据输入处。
1.对用户输入的数据进行过滤
目前引起SQL注入的原因是程序员在编写网站程序时对特殊字符不完全过滤。造成这样的现象还因为程序员对脚本安全没有足够的意识或者考虑不周。常见的过滤方法有基础过滤、二次过滤以及SQL通用防注入程序等多种方式。
(1)基础过滤与二次过滤
在SQL注入入侵前,需要在可修改参数中提交“’”“and”等特殊字符来判断是否存在SQL注入漏洞;而在进行SQL注入攻击时,需要提交包含“;”“--”“update”“select”等特殊字符的SQL注入语句。所以要防范SQL注入,需要在用户输入或提交变量时,对单引号、双引号、分号、逗号、冒号等特殊字符进行转换或过滤,以减少SQL注入漏洞存在的可能性。下面是一个ID变量的过滤性语句:
使用上述代码可以过滤ID参数中的“;”“,”和“insert”字符。如果在ID参数中包含有这几个字符,则会返回错误页面。但危险字符远不止这几个,要过滤其他字符,只需将危害字符加入上面的代码即可。一般情况下,在获得用户提交的参数时,首先要进行一些基础性的过滤,然后根据程序相应的功能以及用户输入进行二次过滤。
(2)使用SQL通用防注入程序进行过滤
通过手工的方法对特殊字符进行过滤难免会留下过滤不严的漏洞。而使用“SQL通用防注入程序”可以全面地对程序进行过滤,从而很好地阻止SQL脚本注入漏洞的产生。
将从网上下载的“SQL通用防注入程序”存放在自己网站所在的文件夹中,进行简单的设置后就可以很轻松地帮助程序员防御SQL注入,这是一种比较简单的过滤方法。该程序全面处理通过POST和GET两种方式提交的SQL注入,并且自定义需要过滤的字符串。当黑客提交SQL注入危险信息时,它就会自动记录黑客的IP地址、提交数据、非法操作等信息。其使用步骤如下。STEP01:将下载的“SQL通用防注入程序”压缩包解压后,可以看到该程序主要包含Neeao_SqlIn.Asp、Neeao_sqi_admin.asp和Sql.mdb这3个文件。STEP02:将其复制到网站所在的文件夹中,在需要防注入的页面头部加入“<!--#includefile="Neeao_SqlIn.Asp"-->”代码,即可在该页面防御SQL注入。除对用户提交的参数和变量进行过滤外,也可以直接限制用户可输入的参数,因为只允许提交有限的字符远比过滤特定的字符更为安全。
提示(www.daowen.com)
如果要想使整个网站都可以防注入,则可在数据文件(一般为conn.asp)中加入“<!--#include file="Neeao_SqlIn.Asp"-->”代码,即可在任意页面中调用防注入程序
(3)在PHP中对参数进行过滤
使用PHP建立网站的文件中有一个配置文件php.ini,在该文件中可对PHP进行安全设置。以安全模式打开php.ini文件的,分别设置“safe_mode=On”和“display_errors=off”。因为如果显示PHP执行错误信息的display_errors属性打开的话,就会返回很多可用信息,这样黑客就可以利用这些信息进行攻击。
另外,该文件还有一个重要的属性magic_quotes_gpc,如果将其设置为On,PHP程序就会自动将用户提交含有“’”“””“\”等特殊字符的数据,转换为含有反斜线的转义字符。该属性与ASP中参数的过滤类似,它可以防御大部分字符型注入攻击。
2.使用专业的漏洞扫描工具
企业应当投资于一些专业的漏洞扫描工具,如Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序可以专门查找网站上的SQL注入式漏洞;而程序员应当使用漏洞扫描工具和站点监视工具对网站进行测试。
3.对重要数据进行加密
采用加密技术对一些重要的数据进行加密,比如用MD5加密,MD5没有反向算法,也不能解密,就可以防范对网站的危害了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。