Как Python ORM защищает от SQL-инъекций под капотом?

ORM обычно отделяет SQL-шаблон от значений параметров и передаёт их драйверу для безопасной привязки. Пользовательские данные не должны становиться частью синтаксиса запроса.

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

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

ORM обычно отделяет SQL-шаблон от значений параметров и передаёт их драйверу для безопасной привязки. Пользовательские данные не должны становиться частью синтаксиса запроса.

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

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

ORM обычно отделяет SQL-шаблон от значений параметров и передаёт их драйверу для безопасной привязки. Пользовательские данные не должны становиться частью синтаксиса запроса.

Например, фильтр по имени формирует условие с параметром, а не склеивает имя с кавычками в SQL. Конкретный способ передачи и экранирования зависит от драйвера и протокола.

Защита не распространяется автоматически на f-строки в raw SQL, пользовательские имена таблиц или направления сортировки. Идентификаторы проверяйте по allowlist или формируйте безопасным API. ORM также не заменяет проверку владельца данных: отсутствие SQL-инъекции не предотвращает IDOR и ошибки авторизации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее