这是我第一次参与这个伟大的网站,所以我希望能得到我的问题的第一个很好的答案。 我使用下面的代码将数据插入到MySQL数据库:PDO准备语句安全
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()插入或显示数据的时刻吗?
亲切的问候
我总是对安全性保持谨慎,所以会剥夺输入。您直接从表单插入到数据库中,因此审核输入可能是一个好主意。 – dwjv
@dwjv我很确定没有检查值isset()第一,你会得到一个通知错误。确保设定值并确保其值正确无误。 –
请参阅http://stackoverflow.com/a/60496/760211,即PDO MySQL驱动程序的默认设置是__emulating prepared statement__。你可能想禁用''emulation''以获得更好的安全性。 – Kita