这是我第一次参与这个伟大的网站,所以我希望得到我的问题的第一个很好的答案。 我正在使用以下代码将数据插入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()插入的时刻或显示数据的时刻吗?
亲切的问候
答案 0 :(得分:3)
是的,您的代码是安全的,但作为一般经验法则,以中性形式存储数据。也就是说,不针对任何特定输出或介质进行编码。在没有出现的情况下进行编码。
如果您要执行相反的操作并在存储之前将其传递给htmlspecialchars()
(就像问题中的代码一样),那么您的数据将专门用于以HTML格式输出。如果您想将其输出到其他位置(例如XML文档),htmlspecialchars()
不适用,那么您必须首先对其进行解码。