Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1207

SQL-инъекция

ПроверилCybersecurity entrepreneur & security researcher

Что такое SQL-инъекция?

SQL-инъекцияАтака внедрения кода, которая встраивает управляемый злоумышленником SQL в запрос к базе данных, позволяя читать, изменять или уничтожать данные.


SQL-инъекция (SQLi) использует приложения, которые конкатенируют недоверенный ввод в SQL-выражения вместо параметризованных запросов. Вставляя кавычки, комментарии или конструкции UNION, злоумышленник переписывает исходный запрос: выгружает таблицы, обходит аутентификацию, повышает привилегии или выполняет команды на уровне СУБД. Среди разновидностей — классическая внутрипотоковая (in-band), основанная на ошибках, слепая булева/временная (вывод данных по одному биту из ответов или задержек ответа) и второпорядковая, когда сохранённый ввод срабатывает при последующем повторном использовании.

SQLi насчитывает десятилетия, но по-прежнему разрушительна. CVE-2023-34362 — SQL-инъекция нулевого дня в Progress MOVEit Transfer — с конца мая 2023 года эксплуатировалась группой шифровальщиков Cl0p: неаутентифицированные злоумышленники внедряли SQL, чтобы развернуть веб-шелл LEMURLOOT и выгрузить содержимое базы данных, что каскадно затронуло тысячи нижестоящих организаций. Утечка данных TalkTalk в 2015 году, раскрывшая около 157 000 записей клиентов, также была SQL-инъекцией против устаревшей веб-страницы. SQLi относится к категории OWASP Top 10 A03:2021 (Injection).

Основная мера защиты — параметризованные запросы / подготовленные выражения (prepared statements), которые отделяют код от данных, так что ввод никогда не может изменить структуру запроса. Дополните это безопасным использованием ORM-фреймворков, валидацией ввода по белому списку, учётными записями СУБД с минимальными привилегиями (без прав DBA для логинов приложения), гигиеной хранимых процедур и WAF как эшелонированной защитой. Ручное экранирование само по себе ненадёжно и не рекомендуется.

flowchart TD
  U["Недоверенный ввод"] --> C{"Как строится запрос?"}
  C -->|"Конкатенация строк"| I["' OR 1=1 -- внедрено в SQL"]
  I --> DB[("База данных выполняет SQL злоумышленника")]
  DB --> X["Выгрузка данных / обход аутентификации"]
  C -->|"Параметризованный запрос"| S["Ввод привязан как данные, а не код"]
  S --> OK["Структура запроса сохранена — безопасно"]

Примеры

  1. 01

    Форма входа, где ввод ' OR '1'='1 возвращает первого пользователя и обходит аутентификацию.

  2. 02

    Эндпоинт отчётов, в котором подобранный параметр запускает UNION SELECT и приводит к утечке хешей паролей.

Частые вопросы

Что такое SQL-инъекция?

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

Что означает SQL-инъекция?

Атака внедрения кода, которая встраивает управляемый злоумышленником SQL в запрос к базе данных, позволяя читать, изменять или уничтожать данные.

Как защититься от SQL-инъекция?

Защита от SQL-инъекция обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия SQL-инъекция?

Распространённые альтернативные названия: SQLi.

Связанные термины

См. также