-1

首先感谢您阅读我的问题。

这几天,我看到我的网站上有很多“恶意”的 url 查询在运行,所以我担心我的 php 脚本是否容易受到 sql 注入的攻击。

我的 url 结构是:http ://mywebsite.com/post.php?id= 7573 要从帖子中获取我需要的所有信息,我使用来自 URL 的帖子 ID。

要“清除”此 ID,我使用以下方法:

$id = mysql_real_escape_string ($id);
$safeID = intval(preg_replace("/[^0-9]/", "", $id));
$sql = "SELECT * FROM web_content WHERE state = '1' AND ID = '$safeID'";
$res = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_assoc($res);
.........

请我需要知道发送到数据库的 safeID 是否真的“安全”。

谢谢

4

3 回答 3

2

它可以像使用一样简单intval($id)

于 2012-11-07T15:29:22.730 回答
1

它是,但preg_replace不需要这样做,因为mysql_real_escape_string已经转义了所有“坏”字符。

于 2012-11-07T15:28:52.773 回答
0

它是安全的。mysql_real_escape_string 和 preg_replace 甚至都不需要,因为 intval 只返回一个整数。

请注意,尽管 intval 在失败时返回 0。所以接收 $id 的 'bla' 与接收 '0' 是一样的。如果这对您的逻辑没有问题,请不要担心。

于 2012-11-07T15:33:04.403 回答