再次说明防注入不是替换关键字!

作者:vkvi 来源:ITPOW(原创) 日期:2008-7-10

最近又看到很多关于 SQL 注入的帖子,都是使用替换 select、delete、update 等字符串的方法来防注入的。

再说明一下,这种是错误的防注入方法,原因如下:

  • 可能替换不全,不是所有的关键字都列入其中了的。
  • 本身这种替换就有漏洞,比如 aandnd 本身没有问题,把其中的 and 替换掉后,反而冒出一个 and 出来。
  • 这种替换方式还破坏了文字的原义,我曾经在某个网站上注册了 candy 这个用户名,后来该系统却告诉我没有这个用户,后来才知道 candy 中的 and 被去掉了。

正确的防注入方法是:

  • 对数字类型进入 sql 前强制转换为数字。C# 一类语言变量非弱类型,一般不容易犯此错误。
  • 对文本类型进入 sql 前替换单引号为两个单引号。
  • 对日期类型进入 sql 前强制转换成日期,并替换单引号为两个单引号。

这是从注入的原理来防的。

相关阅读

相关文章