这个php select语句安全吗?



我正在解析一个url,并使用数字作为id来提取特定的条目

所以用这样的语句:

$blog_id = 5;
$query = "SELECT id,entry,date,views,comments,likes FROM blogs WHERE id=$blog_id ORDER by Id DESC";

是安全的还是我应该使用....id=?……并使用bind_param ?

实际上:这段代码是安全的。为什么?它不需要任何用户输入。所以没有什么可修改的

虽然这没有意义,但没有办法在这里执行SQL注入。一旦您使用POST、GET或Cookies,您必须验证传入的信息。您可以使用PDO::bind_paramfilter_var()htmlspecialchars()

您应该为您的sql使用准备好的语句,因为您从url插入一些值,这些值可能被操纵并破坏您的数据库

这似乎容易受到SQL注入。你需要检查$id只包含对你的id有效的字符,并且没有分号或SQL Keywords

如果变量$blog_id不能更改(如您的问题所示),您可以说这是安全的。然而,建议始终使用准备好的语句来防止sql注入。

更多信息请访问http://php.net/manual/en/pdo.prepared-statements.php

您的代码显示您不是从URL获取值,而是使用

将值5硬编码到变量中
$blog_id = 5;

如果你有这样的东西

$blog_id = $_GET['blogid'];

,那么你的代码是不安全的,并开放给MySQL注入。在这种情况下,你应该使用准备好的语句,其中可以包括?和bindParam。您可以使用mysqli或PDO来完成此操作。我更喜欢PDO

相关内容

最新更新