Бяка-Кака
23.07.2026, 22:10
Короче, столкнулся с ребятами на проекте, где в коде была дырка под SQL-инъекции. Пробили руками на тестах — бах, вход через форму поиска можно было сломать, если не фильтровать ввод. Пришлось гуглить и ставить пару фишек. Главное, что помогло — подготовленные выражения (prepared statements) и ORM с поддержкой параметризации. Плюс всегда вытягивать тупо именно нужные колонки, а не * из базы.
Проверял, как реагируют тесты на всякие кавычки и спецсимволы. Пару раз ловил баг, когда забывали экранировать апострофы в запросах. Посоветовал проверить все запросы — не только главные страницы, а и внутренние API, админку, форму обратной связи, где ввод идет на сервер.
Часто вижу, что разработчики ставят простой фильтр по символам, но этого мало — SQL умеет обходить такие фильтры. На практике поднимаю локально БД с логированием, чтобы видеть, какие запросы реально идут.
Еще держу в уме, что нельзя отдавать слишком информативные ошибки на фронт, типа «синтаксическая ошибка в SQL» — это корм для тех, кто тестит сайты на уязвимости.
Как у вас с этим? Кто что советует, кроме проверенных prepared statements? Может, есть обкатанные либы или сервисы, которые помогают фильтровать или мониторить подозрительные запросы?
Проверял, как реагируют тесты на всякие кавычки и спецсимволы. Пару раз ловил баг, когда забывали экранировать апострофы в запросах. Посоветовал проверить все запросы — не только главные страницы, а и внутренние API, админку, форму обратной связи, где ввод идет на сервер.
Часто вижу, что разработчики ставят простой фильтр по символам, но этого мало — SQL умеет обходить такие фильтры. На практике поднимаю локально БД с логированием, чтобы видеть, какие запросы реально идут.
Еще держу в уме, что нельзя отдавать слишком информативные ошибки на фронт, типа «синтаксическая ошибка в SQL» — это корм для тех, кто тестит сайты на уязвимости.
Как у вас с этим? Кто что советует, кроме проверенных prepared statements? Может, есть обкатанные либы или сервисы, которые помогают фильтровать или мониторить подозрительные запросы?