mysql注入和預防

2021-08-28 15:08:03 字數 1173 閱讀 8817

所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。

我們永遠不要信任使用者的輸入,我們必須認定使用者輸入的資料都是不安全的,我們都需要對使用者輸入的資料進行過濾處理。

輸入的使用者名稱必須為字母、數字及下劃線的組合,且使用者名稱長度為 8 到 20 個字元之間:

if (preg_match("/^\w$/", $_get['username'], $matches))

else

防止sql注入,我們需要注意以下幾個要點:

在指令碼語言,如perl和php你可以對使用者輸入的資料進行轉義從而來防止sql注入。

php的mysql擴充套件提供了mysqli_real_escape_string()函式來轉義特殊的輸入字元。 、

if (get_magic_quotes_gpc()) 

$name = mysqli_real_escape_string($conn, $name);

mysqli_query($conn, "select * from users where name=''");

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

在php指令碼中我們可以使用addcslashes()函式來處理以上情況,如下例項:

$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");

// $sub == \%something\_

mysqli_query($conn, "select * from messages where subject like '%'");

addcslashes() 函式在指定的字元前新增反斜槓。
語法格式:

addcslashes(string,characters)
引數

描述string

必需。規定要檢查的字串。

characters

可選。規定受 addcslashes() 影響的字元或字元範圍。

sql注入預防

sql注入即是指web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程式中事先定義好的查詢語句的結尾上新增額外的sql語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙資料庫伺服器執行非授權的任意查詢,從而進一步得到相應的資料資訊。1.簡單又有效的方法 prepar...

sql注入預防

在我們登陸驗證時會發現sql注入的現象。1.sql注入發生原因 因為如果使用者在使用者名稱上輸入的是 or 1 1 時,我們得到的sql語句是select from shop user where username or 1 1 and password d41d8cd98f00b204e98009...

SQL注入的內容和預防

sql注入 sqli 是一種注入攻擊,可以執行惡意sql語句。它通過將任意sql 插入資料庫查詢,使攻擊者能夠完全控制web應用程式後面的資料庫伺服器。攻擊者可以使用sql注入漏洞繞過應用程式安全措施 可以繞過網頁或web應用程式的身份驗證和授權,並檢索整個sql資料庫的內容 還可以使用sql注入來...