可能重複:
Best way to prevent SQL injection in PHP?SQL注入防護 - 單引號
我一直都做了一些測試,以防止SQL注入我的網站。我看到有幾種方法可以這樣做,轉義我的用戶輸入,添加斜槓,或者更好地使用參數化的sql語句。
我有這個測試代碼..
$q=$_GET["q"];
$game = mysql_query("SELECT * FROM `Games` WHERE `id` = '$q'");
$game = mysql_fetch_array($game);
echo "<h4>ID: ".$game[0]."<br /></h4>name: " . $game[1];
我試了幾個SQLI請求,不能讓我的測試頁面錯誤,或顯示任何額外數據。
但是,當我改變了我的sql語句代碼,這(去掉周圍$ Q單引號)..
$game = mysql_query("SELECT * FROM `Games` WHERE `id` = $q");
我可以進行簡單的SQLI的,並得到了一定的成果。
那麼,只是用單引號包裝我的用戶輸入足夠好?還是我看過更復雜的SQLi技術?
使用PDO與準備好的語句。這是到2012年爲止更安全的選擇。 – itachi
檢查您的php服務器是否有'magic_quotes_gpc = ON',這將有助於防止SQL注入 – jcho360
使用預準備語句(mysqli或POD)。節省了很多麻煩,而且mysql已被棄用。 –