我有一个基于网址路径过滤的网页。地址是这样的:
www.xxx.com/player-profile/?ID=130
使用ID字段过滤页面,如下所示:
$playerid = $_GET['ID'];
$result = mysql_query("SELECT * FROM tblPlayers Where lng_RecordID_PK LIKE ".$playerid."");
我想确保此代码没有任何安全问题。我想有人可能会试图操纵网址。有什么建议吗?
答案 0 :(得分:2)
使用addslashes
上的mysql_real_escape_string
或$playerid
个功能。另外,在将$playerid
插入查询时,请将LIKE
括在引号中。最后,当简单=
执行完全相同的操作时,请避免使用{{1}}。
答案 1 :(得分:2)
您可以使用PDO Prepared Statements作为执行SQL查询的安全方式。
答案 2 :(得分:2)
由于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."' ");