Mastodon Mastodon Mastodon Mastodon

SQL-инъекция [SQLi]

Обновлено: · CyberSecureFox Editorial Team

SQL-инъекция (SQLi) — атака на веб-приложение, при которой вредоносный ввод встраивается в запрос к базе данных, и атакующий читает, меняет или удаляет данные без права доступа к ним.

Как работает SQL-инъекция

Уязвимость возникает, когда приложение собирает SQL-запрос, просто вставляя в его текст данные пользователя. Допустим, форма входа выполняет SELECT * FROM users WHERE name = 'ввод'. Тогда ввод ' OR '1'='1 меняет логику запроса.

Разновидности:

  • классическая (in-band) — результат виден прямо на странице (через ошибки или UNION);
  • слепая (blind) — данные вычисляются по ответам «да/нет» или по задержкам ответа;
  • внеполосная (out-of-band) — данные отправляются на сервер атакующего.

При подходящей СУБД и правах SQLi позволяет не только украсть данные, но и записать файлы, вплоть до удалённого выполнения кода. Поиск и эксплуатацию автоматизируют инструменты вроде sqlmap.

Почему SQL-инъекции опасны

Это одна из старейших веб-уязвимостей, и она по-прежнему входит в категорию «Инъекции» OWASP Top 10. Из-за SQLi происходили крупные утечки:

  • атака на Heartland Payment Systems в 2008 году раскрыла более 100 млн номеров карт;
  • в 2023 году группировка Cl0p через SQL-инъекцию в MOVEit Transfer (CVE-2023-34362) похитила данные тысяч организаций.

Как предотвратить

  • Используйте параметризованные запросы (prepared statements) или безопасный ORM. Никогда не склеивайте ввод с SQL.
  • Выдавайте учётной записи приложения в базе только необходимые права.
  • Проверяйте входные данные, не показывайте пользователям подробные ошибки СУБД, тестируйте код инструментами SAST/DAST.
  • Межсетевой экран веб-приложений (WAF) полезен как дополнительный слой, но не заменяет исправление кода.
Синонимы:
SQL injection, внедрение SQL-кода, SQL-инжекция