如何在引用web url时避免mysql注入


how to avoid mysql injection when referencing the web url

我有一个根据url路径进行过滤的网页。地址是这样的:

www.xxx.com/player-profile/?ID=130

页面使用ID字段进行过滤,如下所示:

$playerid = $_GET['ID'];
$result = mysql_query("SELECT * FROM tblPlayers Where lng_RecordID_PK LIKE ".$playerid."");

我想确保此代码没有任何安全问题。我想可能有人试图操纵网址。有什么建议吗?

由于ID是数字的,因此有一种非常简单且功能强大的方法可以确保查询保持安全!

$playerid = $_GET['ID'];
if (!is_numeric($playerid)) { die(); }
$playerid = mysql_real_escape_string($playerid); // Just in case

这段代码基本上确保在URL中输入的ID是数字,否则它将停止执行脚本。如果它是数字,那么它将继续检索数据,并且无法进行任何SQL注入。

希望有帮助!:)

此外,您可能希望将查询更改为此

$result = mysql_query("SELECT * FROM tblPlayers WHERE lng_RecordID_PK = '".$playerid."' ");

$playerid上使用addslashesmysql_real_escape_string函数。此外,在将$playerid插入查询时,请将其用引号括起来。最后,当一个简单的=会做完全相同的事情时,避免使用LIKE

您可以使用PDO Prepared Statements作为执行SQL查询的安全方式。