Тестирование Безопасности для QA-Инженеров
Тестирование безопасности — не только для пентестеров. QA-инженеры ежедневно работают с функциями, связанными с безопасностью: формы логина, поля ввода, API-эндпоинты и загрузки файлов. Понимание типичных уязвимостей делает вас более эффективным тестировщиком.
OWASP Top 10
| Риск | Подход QA |
|---|---|
| Инъекции (SQL, XSS) | Проверка полей со спецсимволами |
| Сломанная аутентификация | Тщательное тестирование auth-потоков |
| Утечка данных | Проверка HTTPS, заголовков, хранилища |
| Нарушенный контроль доступа | Тестирование ролевого доступа |
| Неправильная конфигурация | Проверка страниц ошибок, заголовков |
| XSS | Тестирование всех пользовательских вводов |
| CSRF | Проверка CSRF-токенов |
Тестирование XSS
Базовые Пейлоады
Тестируйте в каждом поле ввода, поиске, URL-параметре и профиле:
<script>alert('XSS')</script>
"><script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
Где Тестировать
- Строки поиска, поля комментариев, поля профиля, URL-параметры, имена загружаемых файлов, сообщения об ошибках
Тестирование CSRF
- Найдите действие, изменяющее состояние (смена пароля, обновление профиля)
- Проверьте форму — найдите скрытое поле CSRF-токена
- Отправьте нормально — должно работать
- Удалите или измените токен — запрос должен отклоняться
- Повторите с другого origin — должен отклоняться
Тестирование Заголовков Безопасности
curl -I https://example.com
| Заголовок | Ожидаемое значение | Назначение |
|---|---|---|
Strict-Transport-Security | max-age=31536000 | Принуждение HTTPS |
X-Content-Type-Options | nosniff | Предотвращение MIME sniffing |
X-Frame-Options | DENY | Предотвращение clickjacking |
Content-Security-Policy | Ограничительная политика | Предотвращение XSS |
Тестирование Чувствительных Данных
- Нет паролей в исходном коде или сетевых запросах
- Номера карт замаскированы в UI и логах
- Токены сессий не в URL-параметрах
- Нет чувствительных данных в localStorage
Упражнение: Аудит Безопасности
Часть 1: Тестирование XSS
| Место ввода | Пейлоад | Выполнился? | Уязвимо? |
|---|---|---|---|
| Поиск | <script>alert(1)</script> | ||
| Имя профиля | <img src=x onerror=alert(1)> | ||
| Комментарии | <svg onload=alert(1)> | ||
| URL-параметр | ?q="><script>alert(1)</script> |
Часть 2: Тестирование CSRF
| Тест | Ожидаемо | Результат |
|---|---|---|
| Форма имеет CSRF-токен | Токен есть | |
| Отправка с валидным токеном | Успех | |
| Отправка без токена | Отклонение (403) | |
| Отправка с изменённым токеном | Отклонение |
Часть 3: Заголовки Безопасности
| Заголовок | Есть? | Значение | Корректно? |
|---|---|---|---|
| Strict-Transport-Security | |||
| X-Content-Type-Options | |||
| Content-Security-Policy |
Часть 4: Безопасность Аутентификации
| Тест | Ожидаемо | Результат |
|---|---|---|
| Логин с SQL injection | Логин нормально отклоняет | |
| Ошибка логина не раскрывает email | Общее сообщение | |
| Cookie сессии с HttpOnly | Не доступна через JS | |
| Cookie сессии с Secure | Только через HTTPS |
Решение: Типичные Находки Безопасности
Находка 1: Отражённый XSS в поиске. Ввод без кодирования. Исправление: HTML-encode всего пользовательского ввода.
Находка 2: Отсутствие CSRF-токена в обновлении профиля. Исправление: Добавить CSRF-токен ко всем формам.
Находка 3: Отсутствующие заголовки безопасности. Нет CSP и HSTS. Исправление: Добавить заголовки ко всем ответам.
Находка 4: Cookie сессии без HttpOnly. Доступна через document.cookie. Исправление: Флаг HttpOnly.
Находка 5: Подробные сообщения об ошибках. SQL-ошибки при логине. Исправление: Общие сообщения, детали только в серверных логах.
Инструменты для QA
| Инструмент | Назначение | Сложность |
|---|---|---|
| DevTools | Инспекция заголовков, cookies | Низкая |
| OWASP ZAP | Автоматический сканер | Средняя |
| SecurityHeaders.com | Быстрая проверка заголовков | Низкая |
| Mozilla Observatory | Комплексное сканирование | Низкая |
Ключевые Выводы
- QA может и должен проводить базовое тестирование безопасности каждой функции
- Тестируйте все вводы на XSS — поиск, профили, комментарии, URL-параметры
- Проверяйте CSRF-защиту каждого действия, изменяющего состояние
- Проверяйте security headers на каждом деплое
- Cookies сессии должны иметь HttpOnly и Secure
- Используйте OWASP Top 10 как чек-лист для планирования