重複の可能性:
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テクニックを見落としましたか?