Атаки и угрозы
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.
Связанные термины
NoSQL-инъекция
Инъекция в документоориентированные, ключ-значение или графовые БД, при которой злоумышленник внедряет операторы или JavaScript в объекты запроса.
Command Injection
Command Injection — definition coming soon.
Parameterized Query
Parameterized Query — definition coming soon.
Input Validation
Input Validation — definition coming soon.
OWASP Top 10
OWASP Top 10 — definition coming soon.
Межсетевой экран веб-приложений (WAF)
Фильтр в виде обратного прокси, который инспектирует HTTP/HTTPS-трафик, чтобы блокировать веб-атаки (SQL-инъекции, XSS, злоупотребление ботами) ещё до приложения.