sql注入原理及預防措施
SQL注入就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。對於很多網站都有使用者提交表單的埠,提交的資料插入MySQL資料庫中,就有可能發生SQL注入安全問題,那麼,如何防止SQL注入呢?
針對SQL注入安全問題的預防,需時刻認定使用者輸入的資料是不安全的,並對使用者輸入的資料進行過濾處理,對不同的欄位進行條件限制,符合條件的可以寫入資料庫,不符合條件的進行資料過濾處理!
防止SQL注入,需要注意以下幾點:
1. 永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正則表示式,或限制長度;對單引號和 雙"-"進行轉換等。
2. 永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢存取。
3. 永遠不要使用管理員許可權的資料庫連線,為每個應用使用單獨的許可權有限的資料庫連線。
4. 不要把機密資訊直接存放,加密或者hash掉密碼和敏感的資訊。
5. 應用的異常資訊應該給出儘可能少的提示,最好使用自定義的錯誤資訊對原始錯誤資訊進行包裝
6. sql注入的檢測方法一般採取輔助軟體或網站平臺來檢測,軟體一般採用sql注入檢測工具jsky,網站平臺就有億思網站安全平臺檢測工具。MDCSOFT SCAN等。採用MDCSOFT-IPS可以有效的防禦SQL注入,XSS攻擊等。
防止SQL注入之轉義特殊輸入字元
在指令碼語言中,提供了可以對使用者輸入的資料進行轉義的函式,如PHP的MySQL擴充套件提供了mysqli_real_escape_string()函式來轉義特殊的輸入字元,從而來防止SQL注入。
if (get_magic_quotes_gpc())
{
$name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);
mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");
以上是防止SQL注入的常用思路和方法,具體的做法還需要根據實際問題進行設定,感興趣的可以深入學習!