我正在解析网址并使用该数字作为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?
答案 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_param
,filter_var()
或htmlspecialchars()
答案 4 :(得分:1)
如果变量$ blog_id无法更改(如您的问题所示),您可以说这是安全的。但建议始终使用预准备语句来阻止sql注入。
找到更多信息