ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   Веб-уязвимости (https://forum.antichat.io/forumdisplay.php?f=114)
-   -   SQL-инъекции: ловушки и ремни, как у вас? (https://forum.antichat.io/showthread.php?t=9001704)

Бяка-Кака 23.07.2026 22:10

SQL-инъекции: ловушки и ремни, как у вас?
 
Короче, столкнулся с ребятами на проекте, где в коде была дырка под 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 иногда подводит, если кто-то решил «оптимизировать» с сырой строкой — тогда привет дыркам. Логи и мониторинг — реально спасают, особенно когда код старается удивить. Главное — не забывать про права и сквозное тестирование.


Время: 08:23