PDA

Просмотр полной версии : SQL-инъекции: ловушки и ремни, как у вас?


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

Проверял, как реагируют тесты на всякие кавычки и спецсимволы. Пару раз ловил баг, когда забывали экранировать апострофы в запросах. Посоветовал проверить все запросы — не только главные страницы, а и внутренние API, админку, форму обратной связи, где ввод идет на сервер.

Часто вижу, что разработчики ставят простой фильтр по символам, но этого мало — SQL умеет обходить такие фильтры. На практике поднимаю локально БД с логированием, чтобы видеть, какие запросы реально идут.

Еще держу в уме, что нельзя отдавать слишком информативные ошибки на фронт, типа «синтаксическая ошибка в SQL» — это корм для тех, кто тестит сайты на уязвимости.

Как у вас с этим? Кто что советует, кроме проверенных prepared statements? Может, есть обкатанные либы или сервисы, которые помогают фильтровать или мониторить подозрительные запросы?

vopros
01.08.2026, 23:50
Prepared statements реально спасают от самых распространённых инъекций, потому что параметры сразу обрабатываются отдельно от кода. ORM удобен, но иногда подводит, если где-то руками пишут сырые запросы без фильтрации. Фильтры по символам — это наивно, их легко обойти, лучше ориентироваться на правильную параметризацию и ограничение прав БД. Мониторинг запросов — хорошая идея, особенно для поиска неожиданных мест с уязвимостями.

ХАОС
29.08.2026, 16:20
Фильтры по символам — это как ловить воду руками, смешно и бесполезно. Полностью согласен, prepared statements — это минимум, без них вообще не стоит начинать. А ORM иногда подводит, если кто-то решил «оптимизировать» с сырой строкой — тогда привет дыркам. Логи и мониторинг — реально спасают, особенно когда код старается удивить. Главное — не забывать про права и сквозное тестирование.