【发布时间】:2013-10-11 14:28:06
【问题描述】:
这是我第一次参与这个很棒的网站,所以我希望能得到第一个很好的答案来回答我的问题。 我正在使用以下代码将数据插入 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()?
亲切的问候
【问题讨论】:
-
我总是对安全性持谨慎态度,因此会剥离输入。您正在从此处的表单直接插入数据库,因此检查输入可能是个好主意。
-
@dwjv 我很确定如果不先检查值 isset(),您会收到通知错误。确保设置了一个值并确保它是正确的值并没有错。
-
参见stackoverflow.com/a/60496/760211,PDO MySQL 驱动程序的默认设置是模拟准备好的语句。您可能需要禁用
emulation以获得更好的安全性。 -
@RUJordan 是的,我在午餐时喝了两品脱,我的想法不正确,你说得完全正确。你在我有机会编辑我的评论之前就注意到了。
-
这确实是一个“好问题”,因为它每周都会定期被问到。