Possible Duplicate:
Best way to prevent SQL Injection in PHP
在我的网站上,用户可以提交帖子并删除他们的帖子。
要删除帖子,他们可以点击链接/posts.php?deletid=X
,其中X是数据库中帖子的ID(例如:1)。
单击后,它将运行以下命令:
if(isset($_GET['deleteid'])) {
$deleteid = $_GET['deleteid'];
$sql = "DELETE from `posts` WHERE `id`=".mysql_real_escape_string($deleteid).";";
$query = mysql_query($sql);
header('Location: posts.php');
exit();
}
问题在于它很容易受到1 = 1 SQL注入的影响。如果他们在地址栏中输入
/posts.php?deletid=1 OR 1=1;
它将删除数据库中的所有帖子。
在这个问题中:How can I prevent SQL injection in PHP?,我意识到我需要使用mysqli语句,并且我试图使其工作但没有成功。
有人可以确切告诉我如何使用mysqli防止这种情况吗?
最佳答案
您必须在mysql_real_escape_string
的引号中包含值才能产生任何有用的效果。
$sql = "DELETE from `posts` WHERE `id`='".mysql_real_escape_string($deleteid)."'";
或者,尝试使用
mysql_real_escape_string
代替用于字符串的intval
。