3

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

4

1 回答 1

3

只要您将 PDO 与准备好的语句和占位符一起使用,您实际上就尽可能安全。

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

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

$sth->execute(array($user, $comment, $pageid));
于 2013-02-18T12:45:46.847 回答