网络安全 频道

sql注入漏洞攻防

    【IT168 专稿】以前做东西的时候没有考虑过安全性问题,做登陆的话只考虑等用正确的用户名和密码进入就行,从来没有想过被别人攻破怎么办。呵呵……大概是因为以前做的东西都是停留在实验室的阶段,并不需要作为产品正式运行的。最近在学习一些sql的高级操作,看了些东西,感觉还是挺开阔眼界的。果然是见得多了,思考的问题也就更加全面了。

    对付sql注入漏洞的两种方法:过滤敏感字符和使用参数化sql。

    一、过滤敏感字符
    由于恶意攻击者需要在输入框中输入的文本一般是含有OR、AND、SELECT、DELETE之类的字符串片段,所以在拼接sql之前检查应该用户提交的文本中是否还有这些敏感字符串,如果含有则终止操作。

    这样做固然好,但是存在两大缺陷:
    1、会给正常用户的正常操作造成麻烦。因为如何一个正常用户的密码就是“more”、“select”甚至就是"1' or '1'='1",他们没有恶意的,但是在淡季“提交”按钮后,系统却弹出了一个报错信息,用户必须将密码修改为一个不包含敏感字符串的密码。

    2、逻辑难以严谨。尽管过滤了大部分的敏感字符串,但是攻击者是非常聪明的,他们也许能构造一个可以骗过敏感字符串过滤的字符串,从而绕过这道“防火墙”。

    二、使用参数化sql
    java、c#等语言提供了参数化sql机制,使用参数化sql的开发人员为在运行时才能确定的参数值设置占位符,在执行的时候再制定这些占位符所代表的值。

    这种方法从根本上避免了sql注入漏洞攻击。这种方法是相对较好的,但是如果开发的时候才用的是asp、php等语言,那么由于这些语言没有提供参数化sql机制,因此只能才用其他方式来避免sql注入漏洞攻击。
 

0
相关文章