Хранимая процедура уязвима, если склеивает SQL из недоверенных строк и затем выполняет его. ORM снижает риск при параметризованных операциях, но не даёт стопроцентной защиты для raw SQL и динамических фрагментов.
Что такое атака SQL-инъекции через хранимые процедуры и всегда ли использование ORM даёт стопроцентную защиту от инъекций?
Хранимая процедура уязвима, если склеивает SQL из недоверенных строк и затем выполняет его. ORM снижает риск при параметризованных операциях, но не даёт стопроцентной защиты для raw SQL и динамических фрагментов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Хранимая процедура уязвима, если склеивает SQL из недоверенных строк и затем выполняет его. ORM снижает риск при параметризованных операциях, но не даёт стопроцентной защиты для raw SQL и динамических фрагментов.
Значения передавайте параметрами, а имена таблиц, колонок и направление сортировки выбирайте из разрешённого набора: обычные placeholders не заменяют SQL-идентификаторы. Проверяйте, как сама процедура строит запрос внутри, даже если внешний вызов параметризован. Ограничивайте права пользователя БД и не считайте экранирование строк универсальным решением. Безопасность зависит от всего пути данных, включая вспомогательные запросы и обходные методы ORM.
Источник: cheatsheetseries.owasp.org.