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

07-28 03:01
查看更多