1

这是我第一次参与这个很棒的网站,所以我希望能得到第一个很好的回答我的问题。我正在使用以下代码将数据插入 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() 还是在显示数据时使用?

亲切的问候

4

1 回答 1

3

是的,您的代码是安全的,但作为一般经验法则,以中性形式存储数据。也就是说,不针对任何特定的输出或媒体进行编码。在退出时进行编码而不是进入。

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

于 2013-10-04T14:35:00.183 回答