最近又看到很多關於 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