這是我第一次參與這個偉大的網站,所以我希望能得到我的問題的第一個很好的答案。 我使用下面的代碼將數據插入到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