SQL-инъекция сегодня — реально ли защититься одним лишь параметризированным запросом?
Всем привет. В последнее время копаюсь в защите своих сайтов, особенно по теме SQL-инъекций. Раньше казалось, что достаточно использовать подготовленные выражения (prepared statements), и все — можно спать спокойно. Но сейчас вижу, что ситуация не так однозначна: есть всякие нюансы с ORM, разными драйверами, и вообще уязвимости могут проскочить через непроверенные данные в других частях запроса, не только в параметрах.
Кто как сейчас борется с SQLi? Какие реальные методы надежно работают? Стоит ли параллельно валидировать входящие данные или достаточно просто правильно писать запросы? И насколько важна настройка прав базы для минимизации урона? Лицом к лицу с обновленными бд и фреймворками уже не так просто, как раньше.
Было бы интересно услышать конкретные советы из практики, а не просто «используйте PDO и все будет хорошо». Может кто-то видел, как современные фреймворки упрощают/усложняют защиту? Или есть проверенные комбинации методик для разных уровней нагрузки и технологий?
Как вы сейчас проверяете, что нет SQLi, кроме статического анализа кода? Какие инструменты реально показывают слабые места? Поделитесь опытом, плиз.