防御SQL注入攻击时需要注意的一个问题
作者:
SQL注入算是一个极为普通的问题了,解决方案也多如牛毛,但是新的注入方式仍然层出不穷。
目前很多IIS防火墙其实质就是一个ISAPI Filter,针对SQL注入攻击的防御实质就是关键字过滤,这一点在我以前的随笔中提到的在开发的Web Server Guard中也是这样操作的。但目前大部分的IIS防火墙都存在一个漏洞:如果关键字包含未转义百分比符号 (%) ,那么将会绕过这些IIS防火墙的请求过滤和拦截,包含IIS 7.0的Request Filter。
因为这类防火墙都是查找位于URL/Form/Cookie中的关键字,比如Exec。但是如果你传入E%xec,那么将不会被过滤,这个问题在目前已知的大部分IIS防火墙(具体的就不介绍了,以免存在广告之嫌,Google搜索即可知道)中都存在,很容易被轻易穿透。包含微软为ASP提供的一组安全过滤函数里面同样存在这个问题。
URLScan同样存在这个问题,但是URLScan 3.0beta我还没有测试过。所以大家在开发ISAPI Request Filter中要注意这一点。
http://www.ietf.org/rfc/rfc2396.txt
IIS 7.0修补程序:
http://support.microsoft.com/kb/957508/en-us