这是我第一次参加这个伟大的网站,所以我希望得到第一个伟大的答案,我的问题。
我正在使用以下代码将数据插入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()(就像问题中的代码一样),那么您的数据将被绑定到HTML中输出。如果您想将它输出到不适用于htmlspecialchars()的其他地方(例如XML文档),则必须首先对其进行解码。

关于php - PDO准备的声明安全性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19183780/

10-10 14:53