Что такое тестирование безопасности в разработке ПО?

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

Ответ

Тестирование безопасности — это процесс оценки программной системы на наличие уязвимостей, угроз и рисков, которые могут привести к утечке данных, несанкционированному доступу или нарушению конфиденциальности, целостности и доступности (CIA Triad).

Основные подходы:

  • Статический анализ безопасности (SAST): Поиск уязвимостей в исходном коде без его выполнения (инструменты: SonarQube, Checkmarx).
  • Динамический анализ безопасности (DAST): Тестирование работающего приложения через его интерфейсы (инструменты: OWASP ZAP, Burp Suite).
  • Тестирование на проникновение (Penetration Testing): Моделирование атак злоумышленника для оценки реальной защиты.

Пример уязвимости — SQL-инъекция:

-- Некорректный запрос, позволяющий обойти аутентификацию
SELECT * FROM users WHERE username = 'admin' OR '1'='1' --' AND password = '...';

Ключевые методы защиты:

  1. Валидация и санация всех пользовательских входных данных.
  2. Использование подготовленных выражений (parameterized queries) или ORM для работы с БД.
  3. Регулярное сканирование зависимостей на известные уязвимости (SCA).
  4. Принцип наименьших привилегий для доступа к ресурсам.