首先感谢您阅读我的问题。
在这几天,我看到我的网站上运行了很多“恶意”网址查询,所以我担心我的php脚本是否容易受到sql注入攻击。
我的网址结构是: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是否真的“安全”。
谢谢
答案 0 :(得分:2)
它可以像使用intval($id)
答案 1 :(得分:1)
确实如此,但由于preg_replace
已经逃脱了所有“坏”字符,因此不需要执行mysql_real_escape_string
。
答案 2 :(得分:0)
这是安全的。甚至不需要mysql_real_escape_string和preg_replace,因为intval只返回一个整数。
请注意,intval在失败时返回0。因此,接收$ bla的'bla'与接收'0'相同。如果你的逻辑没问题,不要担心。