MySQL注入是一種常見的網絡攻擊方式,黑客通過注入惡意SQL語句來獲取數據庫中的敏感信息或者控制數據庫。下面給大家介紹一下MySQL注入的相關代碼。
// mysql_connect用于建立mysql數據庫的連接 $conn = mysql_connect("localhost", "root", "password"); // 選擇數據庫 mysql_select_db("my_db", $conn); // 使用單引號將用戶輸入的內容括起來,例如輸入的用戶名為admin $username = 'admin'; // 執行SQL查詢語句 $sql = "SELECT * FROM users WHERE username = '$username'"; $result = mysql_query($sql); // 輸出查詢結果 while($row = mysql_fetch_array($result)) { echo $row['username'] . "
"; echo $row['password'] . "
"; }
上面的代碼中使用了變量$username來代替用戶輸入的內容,但是并沒有對這個變量做任何處理,這就給了攻擊者利用SQL注入漏洞的機會。攻擊者可以通過輸入一些特定的字符來改變SQL語句的執行過程,從而達到非法獲取數據的目的。
// 使用單引號將用戶輸入的內容括起來,例如輸入的用戶名為admin';-- $username = "admin';--"; // 執行SQL查詢語句 $sql = "SELECT * FROM users WHERE username = '$username'"; $result = mysql_query($sql); // 輸出查詢結果 while($row = mysql_fetch_array($result)) { echo $row['username'] . "
"; echo $row['password'] . "
"; }
上面的代碼中,攻擊者在輸入用戶名時加入了一個單引號和兩個破折號,這樣就會讓SQL語句中的where條件變成"where username = 'admin';--'"。破折號的作用是注釋掉后面的SQL語句,從而讓整個查詢變成"SELECT * FROM users WHERE username = 'admin'"。這樣攻擊者就可以非法獲取用戶名為admin的用戶數據。