В процессе перехода с mysql_* на PDO вы можете столкнуться с дилеммой отсутствия прямого эквивалента mysql_real_escape_string.
Нет прямого эквивалента
Технически существует PDO::quote(), но его использование ограничено. Истинное решение заключается в правильной реализации подготовленных операторов.
Подготовленные операторы защищают от инъекций
PDO при использовании с подготовленными операторами по своей сути защищает от MySQL-инъекций без необходимости необходимость дополнительного побега. Подготовленные операторы привязывают входные параметры к заполнителям, предотвращая интерпретацию вредоносного ввода как команды SQL.
Пример: использование подготовленных операторов в PDO
Следующий код демонстрирует защищенную базу данных запрос с использованием подготовленных операторов:
false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
if ($_POST && isset($_POST['color'])) {
$stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?");
$stmt->execute(array($_POST['color']));
$cars = $stmt->fetchAll(\PDO::FETCH_ASSOC);
var_dump($cars);
}
?>
Преимущества подготовленных операторов
Дополнительные рекомендации
Заключение
Подготовленные операторы в PDO обеспечивают надежный и безопасный механизм запросов к базе данных без необходимости использования таких функций, как mysql_real_escape_string. Приняв этот подход, вы сможете эффективно предотвратить SQL-инъекции и сохранить целостность ваших данных.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3