可能重复:
在 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 技术?