$s = "Update member_date" [snip]
$p = $pdo->prepare($s, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$p->execute();
这被认为是"准备好的"声明可以证明从SQL注入式攻击中获得安全性?
更新:
$member_id= htmlspecialchars($_GET['member_id']);
s1 = "
update member_date
set member_date= now()
where member_id= $member_id";
总体问题:"这是我应该如何格式化所有新的SQL相关代码?我在阅读了我的(新)错误日志后,终于从旧的mysql语句切换了。我是否需要在字符串中添加问号占位符等,或者为了安全起见,我在第一行代码中的格式是否正常?我知道我需要的SQL才能完成任务而不是PDO安全部分。"
答案 0 :(得分:0)
没有。您没有按预期使用准备好的声明。你应该做的是添加你的$id
作为参数,从而将你的内容(id)与你的代码(sql)分开。
虽然你可以自己过滤安全的SQL,但最好的方法是,正如你所说的那样:
在字符串中添加问号占位符等
你可以说"这需要是int
,然后它永远不会像"
那样可怕,或者某些代码会对您的查询产生魔力。
答案 1 :(得分:-2)
PDO是避免可能攻击服务器的SQL注入的最佳方法。代码看起来很好。但PHP PDO是避免sql注入的绝对正确方法。