我有一个简单的评论系统,用户将文本输入textarea
,运行PHP脚本,检查用户是否已登录,是否按下了提交并且所有内容都已填写 - 它继续插入数据。我的问题是,我需要逃脱/修剪/剥离什么?现在我的查询看起来像这样:
$sql = $con->prepare("INSERT INTO Comments (user, comment, pageid, time) VALUES (:user, :comment, :pageid, NOW())");
$sql->bindValue(":user", $user, PDO::PARAM_STR);
$sql->bindValue(":comment", $comment, PDO::PARAM_STR);
$sql->bindValue(":pageid", $pageid, PDO::PARAM_INT);
$sql->execute();
变量来自使用POST
方法的表单。这对sql注入是安全的还是我需要在插入数据之前做一些额外的修剪和转义?
答案 0 :(得分:3)
只要您将PDO与准备好的语句和占位符一起使用,您就几乎可以安全使用。
我建议使用 - > execute()与数组,它比手动绑定变量简单得多。
$sth = $con->prepare('INSERT INTO Comments (user, comment, pageid, time) VALUES (?, ?, ?, NOW())');
$sth->execute(array($user, $comment, $pageid));