securityПровереноPHP 8

SQL-инъекция: защита в PHP и PDO

Передавайте значения отдельно от SQL. Динамические идентификаторы выбирайте только из заранее разрешённого набора.

$pdo->prepare('SELECT * FROM users WHERE id = :id')

Угроза

Если пользовательская строка меняет структуру SQL, она может прочитать, изменить или удалить данные с правами приложения.

Значения

Именованный placeholder и execute() отделяют данные от кода запроса. Не заключайте placeholder в кавычки вручную.

Идентификаторы

ORDER BY и имя таблицы нельзя передать как обычное значение. Отображайте короткий ключ интерфейса на известный SQL-фрагмент.

Дополнительные меры

Минимальные права пользователя БД, безопасные журналы, ограничения выдачи и тесты отрицательных входов уменьшают последствия ошибки.

Антипаттерн

addslashes() и ручная замена кавычек не являются универсальной защитой SQL.

Связанные материалы

Источники и проверка

  • PHP Documentation Group — структурный источник, без внешней ссылки

Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie