如何防止sql惡意注入?
這是個好問題。
定義與解決思路sql injection的原因:用戶提交的參數可以入庫,并且當做sql結構化查詢語句執行。
根本辦法: 杜絕用戶提交的參數入庫,并且阻止執行。
SQL注入,一般發生在網站上。
如果網站程序是 JAVA語言可以用 prepareStatement, 作參數化綁定;
也可以用 存儲過程,SQL封裝在存儲過程中;
用ORM技術,如 ibats, hibrnate 等;
如果網站程序是 .NET語言可以用 SqlParameter, 作參數化綁定;也可以用 存儲過程,SQL封裝在存儲過程中;
也可以用ORM技術,如 EntityFrameWork, Dapper 等;
如果網站程序是其它程序,如 PHP語言不拼SQL,可能找不到其它的路;
但是 可以提煉一個公共函數,自動過濾SQL關鍵詞(select, or, and,insert 等);
尤其要屏蔽那些攻擊性的關鍵詞如 update, delete, truncate, drop 等
拼接到字符串的傳參前后加個括號 與 反括號,可相對有效隔離危險。
希望能對大家有所幫助,謝謝。
(結束)