Интернет магазин с нуля на php Выпуск №17 Введение в mysql
Защита базы данных. Защита от SQL-инъекций
Неэффективные способы защиты от SQL-инъекций Если вы не обеспечиваете защиту от SQL инъекций и передаете данные, полученные от пользователя, непосредственно в SQL запрос, это считается наиболее опасным и нежелательным подходом. Так делать нельзя! Необходимо всегда проводить фильтрацию и/или валидацию любых данных перед их использованием в SQL-запросе. Функция htmlspecialchars() Функция htmlspecialchars() представляет опасность, поскольку она не экранирует опасные символы, такие как слеш (\), null-байт (\0) и backspace (\b)...
Как исключить возможность SQL инъекций в PHP
Правильный способ избежать атак с использованием SQL-инъекций, независимо от того, какую базу данных вы используете, - это отделить данные от базы. Переданные значения никогда не должны интерпретироваться синтаксическим анализатором SQL как команды.
Необходимо написать запрос так, что бы пришедшее значение шло как параметр запроса и экранировалось на уровне приложения, а не хранилища данных. В такой реализации злоумышленник не сможет внедрить вредоносный SQL. Базово существуют два варианта решения этой задачи: $stmt = $pdo->prepare('SELECT * FROM products WHERE code = :code');
$stmt->execute([ 'code' => $code ]);
foreach ($stmt as $row) {
// получаем значения из $row
} 2...