PDO准备了声明安全性

时间:2013-10-04 14:28:35

标签: php mysql security pdo

这是我第一次参与这个伟大的网站,所以我希望得到我的问题的第一个很好的答案。 我正在使用以下代码将数据插入MySQL数据库:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) 
{
$q = $conn->prepare("INSERT INTO client (name, address) VALUES (:name, :address)");
$q->bindValue(':name', htmlspecialchars($_POST['name']), PDO::PARAM_STR);
$q->bindValue(':address', htmlspecialchars($_POST['address']), PDO::PARAM_STR);
$q->execute();
}

插入是否足够安全? 我应该使用htmlspecialchars()插入的时刻或显示数据的时刻吗?

亲切的问候

1 个答案:

答案 0 :(得分:3)

是的,您的代码是安全的,但作为一般经验法则,以中性形式存储数据。也就是说,不针对任何特定输出或介质进行编码。在没有出现的情况下进行编码。

如果您要执行相反的操作并在存储之前将其传递给htmlspecialchars()(就像问题中的代码一样),那么您的数据将专门用于以HTML格式输出。如果您想将其输出到其他位置(例如XML文档),htmlspecialchars()不适用,那么您必须首先对其进行解码。