Это мое первое участие в этом замечательном сайте, поэтому я надеюсь получить первый отличный ответ на мой вопрос. Я использую следующий код для вставки данных в базу данных 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 - это __получение подготовленного оператора__. Вы можете отключить «эмуляцию» для лучшей безопасности. – Kita