Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
再次说明防注入不是替换关键字!
免费注册联想 5G 网盘

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

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

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

正确的防注入方法是:

  • 对数字类型进入 sql 前强制转换为数字。
  • 对文本类型进入 sql 前替换单引号为双引号。
  • 对日期类型进入 sql 前强制转换成日期,并替换单引号为双引号。

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

相关阅读

文章评论
标题:必填
内容:
文章信息