我有一个根据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
上使用addslashes
或mysql_real_escape_string
函数。此外,在将$playerid
插入查询时,请将其用引号括起来。最后,当一个简单的=
会做完全相同的事情时,避免使用LIKE
。
您可以使用PDO Prepared Statements作为执行SQL查询的安全方式。