我有一个示例代码,我需要知道它是否是PDO安全(MySQL)

时间:2017-02-04 20:11:38

标签: mysql pdo prepared-statement

$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安全部分。"

2 个答案:

答案 0 :(得分:0)

没有。您没有按预期使用准备好的声明。你应该做的是添加你的$id作为参数,从而将你的内容(id)与你的代码(sql)分开。

虽然你可以自己过滤安全的SQL,但最好的方法是,正如你所说的那样:

  

在字符串中添加问号占位符等

你可以说"这需要是int,然后它永远不会像"那样可怕,或者某些代码会对您的查询产生魔力。

答案 1 :(得分:-2)

PDO是避免可能攻击服务器的SQL注入的最佳方法。代码看起来很好。但PHP PDO是避免sql注入的绝对正确方法。