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

时间:2012-01-08 02:55:02

标签: php web sql-injection

我有一个基于网址路径过滤的网页。地址是这样的:

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

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

$playerid = $_GET['ID'];

$result = mysql_query("SELECT * FROM tblPlayers Where lng_RecordID_PK LIKE ".$playerid."");

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

3 个答案:

答案 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."' ");