防止SQL注入

防止SQL注入,咱們須要注意如下幾個要點:mysql

  • 1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,能夠經過正則表達式,或限制長度;對單引號和 雙"-"進行轉換等。
  • 2.永遠不要使用動態拼裝sql,能夠使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
  • 3.永遠不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。
  • 4.不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
  • 5.應用的異常信息應該給出儘量少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝
  • 6.sql注入的檢測方法通常採起輔助軟件或網站平臺來檢測,軟件通常採用sql注入檢測工具jsky,網站平臺就有億思網站安全平臺檢測工具。MDCSOFT SCAN等。採用MDCSOFT-IPS能夠有效的防護SQL注入,XSS攻擊等。

防止SQL注入

在腳本語言,如Perl和PHP你能夠對用戶輸入的數據進行轉義從而來防止SQL注入。正則表達式

PHP的MySQL擴展提供了mysql_real_escape_string()函數來轉義特殊的輸入字符。sql

if (get_magic_quotes_gpc()) { $name = stripslashes($name); } $name = mysql_real_escape_string($name); mysql_query("SELECT * FROM users WHERE name='{$name}'");

Like語句中的注入

like查詢時,若是用戶輸入的值有"_"和"%",則會出現這種狀況:用戶原本只是想查詢"abcd_",查詢結果中卻有"abcd_"、"abcde"、"abcdf"等等;用戶要查詢"30%"(注:百分之三十)時也會出現問題。數據庫

在PHP腳本中咱們能夠使用addcslashes()函數來處理以上狀況,以下實例:安全

$sub = addcslashes(mysql_real_escape_string("%something_"), "%_"); // $sub == \%something\_ mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

addcslashes() 函數在指定的字符前添加反斜槓。函數

語法格式:工具

addcslashes(string,characters)
參數 描述
string 必需。規定要檢查的字符串。
characters 可選。規定受 addcslashes() 影響的字符或字符範圍。
相關文章
相關標籤/搜索