Ответ
Тестирование безопасности — это процесс оценки программной системы на наличие уязвимостей, угроз и рисков, которые могут привести к утечке данных, несанкционированному доступу или нарушению конфиденциальности, целостности и доступности (CIA Triad).
Основные подходы:
- Статический анализ безопасности (SAST): Поиск уязвимостей в исходном коде без его выполнения (инструменты: SonarQube, Checkmarx).
- Динамический анализ безопасности (DAST): Тестирование работающего приложения через его интерфейсы (инструменты: OWASP ZAP, Burp Suite).
- Тестирование на проникновение (Penetration Testing): Моделирование атак злоумышленника для оценки реальной защиты.
Пример уязвимости — SQL-инъекция:
-- Некорректный запрос, позволяющий обойти аутентификацию
SELECT * FROM users WHERE username = 'admin' OR '1'='1' --' AND password = '...';
Ключевые методы защиты:
- Валидация и санация всех пользовательских входных данных.
- Использование подготовленных выражений (parameterized queries) или ORM для работы с БД.
- Регулярное сканирование зависимостей на известные уязвимости (SCA).
- Принцип наименьших привилегий для доступа к ресурсам.