💉Инъекции

SQL, NoSQL, OS, LDAP инъекции: внедрение вредоносного кода через пользовательский ввод.

📖2 мин чтения📊Уровень 8📅16 апреля 2026 г.

Загрузка карты...

Инъекционные атаки — класс уязвимостей, при которых злоумышленник внедряет вредоносный код в запросы, интерпретируемые приложением или базой данных. Это первая строка в списке OWASP Top 10 — самом известном рейтинге веб-уязвимостей. Причина — недостаточная валидация и экранирование пользовательского ввода.

SQL-инъекция

Самый распространённый вид. Пример уязвимого кода:

SELECT * FROM users WHERE name = '" + userName + "'

Если передать в userName значение ' OR '1'='1, запрос вернёт все записи таблицы. Атаки позволяют: читать конфиденциальные данные, изменять или удалять записи, выполнять команды ОС (через xp_cmdshell в MSSQL). Защита: параметризованные запросы (prepared statements) — универсальный и надёжный метод. ORM-библиотеки делают это автоматически.

NoSQL, OS и LDAP инъекции

  • NoSQL-инъекция — MongoDB-запрос с $where или $regex позволяет обойти аутентификацию
  • OS Command Injection — вызов system() или exec() с пользовательским вводом. Вместо имени файла передаётся file.txt; rm -rf /
  • LDAP-инъекция — манипуляция поиском в каталоге Active Directory
  • XXE (XML External Entity) — чтение файлов сервера через XML-процессор

Защита

Главные принципы защиты от инъекций: никогда не конкатенировать ввод пользователя в запросы, использовать параметризованные запросы и ORM, применять принцип минимальных привилегий для учётных записей БД, валидировать тип и формат входных данных, использовать WAF (Web Application Firewall) как дополнительный слой защиты.