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

作者:vkvi 来源:千一网络(原创) 日期:2008-7-10

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

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

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

正确的防注入方法是:

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

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

相关阅读

你前面那位网友看了:Unable to find a version of the runtime to run this application.

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
赞助商们
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他