这个php select语句安全吗?

时间:2015-06-10 06:19:06

标签: php select bindparam

我正在解析网址并使用该数字作为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?

5 个答案:

答案 0 :(得分:1)

您应该为您的sql使用预准备语句,因为您从URL中插入了一些值,可以对其进行操作并销毁您的数据库

答案 1 :(得分:1)

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

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

如果你有类似的东西

$blog_id = $_GET['blogid'];

那么你的代码是不安全的,并且对MySQL注入开放。在这种情况下,你应该使用准备好的陈述,包括?和bindParam。您可以使用mysqli或PDO来执行此操作。我更喜欢PDO。

答案 2 :(得分:1)

这似乎容易受到SQL注入攻击。您必须检查$ id是否只包含对您的ID有效的字符,并且没有分号或SQL关键字

答案 3 :(得分:1)

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

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

来执行此操作

答案 4 :(得分:1)

如果变量$ blog_id无法更改(如您的问题所示),您可以说这是安全的。但建议始终使用预准备语句来阻止sql注入。

可以在http://php.net/manual/en/pdo.prepared-statements.php

找到更多信息