Статья #66 · Уязвимости

Injection-уязвимости простыми словами

Injection появляется, когда данные пользователя смешиваются с командой для интерпретатора: SQL-базы, оболочки ОС, LDAP, шаблонизатора или другого языка. Интерпретатор перестаёт различать данные и управляющий синтаксис.

Автор: редакция NDK VPN Обновлено: 02.08.2026 Время чтения: 3 мин.

Короткий ответ

Основная защита — параметризованные запросы и безопасные API, которые передают код и данные раздельно. Валидация, минимальные права и изоляция уменьшают риск, но ручное экранирование не должно быть главным механизмом.

Где возникает ввод

Источник — не только поле формы. Заголовки, JSON, имя файла, значение cookie, импортированный CSV и данные другого сервиса тоже недоверенны на границе компонента.

Почему allowlist лучше

Если ожидается число, UUID или одно из нескольких действий, проверяйте именно этот формат. Запрет нескольких опасных символов легко обходится кодировками и новым синтаксисом.

Проверка исправления

Добавьте автоматический тест с метасимволами и убедитесь, что запрос остаётся данными. Одновременно проверьте, что аккаунт базы не может изменять лишние таблицы или выполнять системные команды.

Чек-лист действий

  1. Найдите все границы недоверенного ввода.
  2. Используйте подготовленные запросы.
  3. Ограничьте допустимый формат данных.
  4. Выдайте сервису минимальные права.
  5. Добавьте негативные тесты.

Что часто делают неправильно

Источники и документация

Вопросы по теме

ORM исключает SQL injection?

Он снижает риск при обычных параметризованных операциях, но сырой SQL и динамические фрагменты всё ещё могут быть уязвимы.

Валидация полностью решает проблему?

Нет. Она дополняет безопасный API, но не должна заменять разделение команды и данных.

Относится ли XSS к injection?

Исторически да как внедрение в браузер, однако в OWASP Top 10 2021 XSS рассматривается внутри более широкой категории Injection.

Продолжить

Следующие статьи