Как защитить приложение от SQL-инъекций без WAF, IPS и IDS?

Параметризация значений, безопасный выбор идентификаторов и минимальные права БД. Почему ORM и фильтрация кавычек сами по себе не гарантируют защиту.

Короткий ответ

Что ответить на собеседовании

Не смешивайте SQL-код с недоверенными значениями: передавайте значения через параметры драйвера. Имена таблиц, колонок и направление сортировки выбирайте из разрешённого набора, при необходимости используя API для идентификаторов. Проверяйте raw SQL и динамический SQL в процедурах. ORM безопасен только при корректном использовании; права БД ограничивают последствия, но не заменяют параметризацию.

Подробный разбор

Ответ с пояснениями

Основная защита находится в приложении: структура SQL должна оставаться кодом, а ввод — данными. Не собирайте запрос из пользовательских строк конкатенацией или интерполяцией.

Пример с psycopg2, где username передаётся отдельно:

cursor.execute(
    "SELECT id, username FROM users WHERE username = %s",
    (username,),
)

%s здесь — placeholder драйвера, не оператор форматирования Python. Кавычки вокруг него не ставят. Для одного параметра нужна последовательность, поэтому у кортежа есть запятая. См. документацию psycopg2.

Параметризация значений не предназначена для имени таблицы или ключевого слова ASC. Такие части выбирают по разрешённому отображению, а идентификаторы оформляют средствами драйвера. Проверка типов, диапазонов и длины полезна, но список запрещённых символов не заменяет эту границу.

ORM не делает безопасными raw-запросы, собранные строкой. Аналогично, хранимая процедура может быть уязвима, если внутри конкатенирует динамический SQL. Эти случаи нужно проверять отдельно.

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

OWASP рассматривает параметризацию как основной подход. WAF может быть дополнительным слоем, но его отсутствие не мешает исправить первопричину инъекции.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку