SQL-инъекции: механика и защита

SQL-инъекция — внедрение SQL-кода через пользовательский ввод. Одна из старейших и самых опасных уязвимостей: полный дамп БД, обход авторизации, RCE.

Виды инъекций

In-band: результат в том же ответе (Error-based, UNION-based). Blind: без явного вывода (Boolean-based, Time-based). Out-of-band: результат через DNS/HTTP. Second-order: инъекция срабатывает позже, при чтении сохранённых данных.

Векторы в игровых платформах

Форма логина: 'OR 1=1--. Параметры игры: game_id, bet_amount. Поиск турниров: name search. API-endpoints с фильтрами: /api/history?player='UNION SELECT... Опасны все точки ввода без параметризации.

Защита: prepared statements

Всегда: параметризованные запросы. PDO в PHP, PreparedStatement в Java, параметры в Node.js drivers. Никогда не конкатенировать строки в SQL. ORM (Prisma, TypeORM, SQLAlchemy) по умолчанию безопасны — но не забывайте про raw queries.

Defense in depth

Least privilege для DB-user: только нужные права, никаких DROP. Валидация ввода: whitelisting, типы, длины. WAF: ModSecurity, Cloudflare. Runtime protection: RASP-решения. Аудит: логирование SQL, alerting на аномалии. Регулярные pentest.