从textarea插入数据时需要在查询中转义什么?

时间:2013-02-18 12:41:13

标签: php sql pdo escaping code-injection

我有一个简单的评论系统,用户将文本输入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注入是安全的还是我需要在插入数据之前做一些额外的修剪和转义?

1 个答案:

答案 0 :(得分:3)

只要您将PDO与准备好的语句和占位符一起使用,您就几乎可以安全使用。

我建议使用 - > execute()与数组,它比手动绑定变量简单得多。

$sth = $con->prepare('INSERT INTO Comments (user, comment, pageid, time) VALUES (?, ?, ?, NOW())');

$sth->execute(array($user, $comment, $pageid));
相关问题