CyberGlossary

Атаки и угрозы

SQL-инъекция

Также известно как: SQLi

Определение

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

SQL-инъекция (SQLi) возникает, когда приложение склеивает пользовательский ввод с SQL-запросами без разделения кода и данных. С помощью полезных нагрузок вроде ' OR 1=1-- или UNION SELECT злоумышленник может обойти аутентификацию, читать произвольные таблицы, изменять и удалять записи, а на неправильно настроенных СУБД — выполнять команды ОС. Известны варианты на основе ошибок, UNION, слепые (булевые и по времени), а также внеполосные (out-of-band). Уязвимость регулярно входит в OWASP Top 10. Основная защита — параметризованные запросы (prepared statements) с привязкой переменных в сочетании с проверкой ввода, учётными записями БД с минимальными правами, защищёнными ORM и WAF в качестве компенсирующего контроля.

Примеры

  • Форма входа, где username='admin'-- позволяет войти без пароля.
  • Поисковый эндпоинт, который через подобранный UNION SELECT раскрывает столбец password_hash.

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