Какой у вас опыт тестирования на уязвимости типа SQL-инъекция?

«Какой у вас опыт тестирования на уязвимости типа SQL-инъекция?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, есть опыт проведения security-тестирования веб-приложений на наличие уязвимостей SQL Injection (SQLi). Работа включает ручное тестирование и использование автоматизированных инструментов.

Методология и примеры атак:

  1. Классическая инъекция в поле аутентификации:
    • Ввод: ' OR '1'='1 или admin'--
    • Цель: обход проверки логина/пароля.
  2. Union-based атака для извлечения данных:
    • Ввод: ' UNION SELECT username, password FROM users--
    • Цель: получить данные из других таблиц.
  3. Blind SQL Injection (логическая/временная):
    • Ввод: ' AND SLEEP(5)--
    • Цель: подтвердить уязвимость по времени отклика сервера.

Объекты тестирования: проверяются не только текстовые поля форм, но и:

  • URL-параметры (/user?id=1')
  • HTTP-заголовки (Cookie, User-Agent, X-Forwarded-For)
  • JSON/XML тела запросов в REST API.

Основные методы защиты, которые также проверяются:

  • Использование параметризованных запросов (Prepared Statements) — основной метод.
  • Валидация и экранирование пользовательского ввода.
  • Принцип минимальных привилегий для учетной записи БД.
  • Регулярное обновление СУБД и библиотек.

Инструменты: для автоматизации разведки и эксплуатации использовал sqlmap. Пример базовой команды для проверки параметра:

sqlmap -u "http://example.com/page?id=1" --dbs

Тестирование проводится на изолированных стендах (не в production).