最近又看到很多关于 SQL 注入的帖子,都是使用替换 select、delete、update 等字符串的方法来防注入的。
再说明一下,这种是错误的防注入方法,原因如下:
- 可能替换不全,不是所有的关键字都列入其中了的。
- 本身这种替换就有漏洞,比如 aandnd 本身没有问题,把其中的 and 替换掉后,反而冒出一个 and 出来。
- 这种替换方式还破坏了文字的原义,我曾经在某个网站上注册了 candy 这个用户名,后来该系统却告诉我没有这个用户,后来才知道 candy 中的 and 被去掉了。
正确的防注入方法是:
- 对数字类型进入 sql 前强制转换为数字。
- 对文本类型进入 sql 前替换单引号为双引号。
- 对日期类型进入 sql 前强制转换成日期,并替换单引号为双引号。
这是从注入的原理来防的。
SQL注入天书之ASP注入漏洞全接触
http://www.cftea.com/c/487.asp
ASP文档
http://www.cftea.com/docs/asp/index.asp?page=27&sort=pubTime&order=desc