程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 如何避免sql注入攻擊需要采取的錯誤

如何避免sql注入攻擊需要采取的錯誤

編輯:關於MYSQL數據庫
對Java ,JSP 開發的應用,可以使用 prepareStatement + Bind-variable 來防止sql注入,另外從PHP 5開始,也在擴展的MySQLi中支持prepared statements,所以在使用這類語言作數據庫開發時 ,強烈建議使用 pre

 開發中可以采取的措施
7.2.1 prepareStatementprepareStatementprepareStatementprepareStatement + Bind-variableBind-variableBind-variableBind-variable
對Java ,JSP 開發的應用,可以使用 prepareStatement + Bind-variable 來防止sql注入,另外從PHP 5開始,也在擴展的MySQLi中支持prepared statements,所以在使用這類語言作數據庫開發時 ,強烈建議使用 prepareStatement + Bind-variable 來實現,而盡量不要使用拼接的sql。
7.2.2 使用應用程序提供的轉換函數:
很多應用程序接口都提供了對特殊的字符進行轉換的函數,恰當的使用這些函數,可以防止應用程序用戶輸入使應用程序生成不期望的效果的語句的數值。
MySQL C API:使用MySQL_real_escape_string() API調用。
MySQL++:使用escape和quote 修飾符。
PHP:使用mysql_real_escape_string()函數(適用於PHP 4.3.0,之前的版本請使用MySQL_escape_string(), PHP 4.0.3之前的版本請使用addslashes())。從PHP 5開始,可以使用擴展的mysqli,這是對MySQL新特性的一個擴展支持,其中的一個優點就是支持prepared statements。
7.2.3 自己定義函數進行校驗
如果現有的轉換函數仍然不能滿足要求,則需要自己編寫函數進行輸入校驗。輸入驗證是一個很復雜的問題。輸入驗證的途徑可以分為以下幾種:
整理數據使之變得有效;
拒絕已知的非法輸入;
只接受已知的合法的輸入。
所以如果想要獲得最好的安全狀態,目前最好的解決辦法就是對用戶提交或者可能改變的數據進行簡單分類, 分別應用正則表達式來對用戶提供的輸入數據進行嚴格的檢測和驗證。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved