这是我第一次参与这个很棒的网站,所以我希望得到第一个对我的问题的很好的回答。 我正在使用以下代码将数据插入 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() 还是在显示数据时使用?
亲切的问候
最佳答案
是的,您的代码是安全的,但根据一般经验,以中性形式存储数据。也就是说,不针对任何特定的输出或媒体进行编码。在出路时进行编码,而不是在进路时进行编码。
如果您做相反的事情并在存储之前通过 htmlspecialchars()
传递它(就像您在问题中的代码),那么您的数据将专门绑定(bind)为以 HTML 格式输出。如果您想将其输出到其他地方(例如 XML 文档),而 htmlspecialchars()
不适用,那么您必须先对其进行解码。
关于php - PDO 准备语句安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183780/