автор Малаховская Екатерина
Тестирование безопасности: Руководство для начинающих тестировщиков
Тестирование безопасности играет важную роль в разработке программного обеспечения. Оно помогает выявлять и устранять уязвимости, которые могут быть использованы злоумышленниками для получения несанкционированного доступа к данным и системам. В этой статье мы рассмотрим, что такое тестирование безопасности, когда и на каких проектах его следует проводить, на что обращать внимание при тестировании, и как составить план тестов на безопасность.
1. Что такое тестирование безопасности

Тестирование безопасности (или security testing) - это процесс оценки безопасности системы или приложения с целью выявления уязвимостей, угроз и рисков, которые могут привести к несанкционированному доступу, утечке данных или другим нарушениям. Основная цель тестирования безопасности - обеспечить защиту данных и поддерживать целостность, конфиденциальность и доступность системы.

Тестирование безопасности включает в себя различные виды тестов, такие как:
  • Тестирование на проникновение (Penetration Testing)
  • Анализ уязвимостей (Vulnerability Assessment)
  • Статический анализ кода (Static Code Analysis)
  • Динамическое тестирование (Dynamic Testing)
  • Тестирование на отказоустойчивость (Resilience Testing)
2. Когда и на каких проектах надо проводить тесты безопасности

Тестирование безопасности следует проводить на всех этапах разработки и на всех типах проектов, особенно если они связаны с обработкой конфиденциальной информации. Вот несколько примеров, когда и на каких проектах это особенно важно:

Веб-приложения, т.к. они часто являются целью атак, таких как SQL-инъекции, XSS и CSRF.

Уязвимости в мобильных приложениях могут привести к компрометации личных данных пользователей.

Корпоративные системы обрабатывают критически важные данные, и их компрометация может иметь серьёзные последствия для бизнеса.

Финансовые приложения, где безопасность данных клиентов и транзакций является критически важной.

Медицинские системы, где защита персональных данных пациентов обязательна согласно законодательству.
3. На что надо обращать внимание при тестировании безопасности

При тестировании безопасности следует обращать внимание на следующие аспекты:

Аутентификация и авторизация. Проверяйте, что система правильно идентифицирует пользователей и контролирует доступ к ресурсам. Например:
  • проверьте, что только авторизованные пользователи могут получить доступ к защищенным ресурсам.
  • попробуйте получить доступ к защищенному ресурсу (например, к странице профиля пользователя) без аутентификации. Убедитесь, что система перенаправляет на страницу входа или возвращает ошибку "403 Forbidden"

Управление сеансами. Убедитесь, что сеансы пользователей защищены от захвата. Например:
  • проверьте, что сеанс пользователя завершается после выхода. Войдите в систему, затем выйдите.
  • попробуйте получить доступ к защищенному ресурсу, используя старый сеансовый идентификатор. Убедитесь, что доступ запрещен

Шифрование данных. Проверяйте, что данные, передаваемые и хранящиеся в системе, защищены с помощью шифрования. Например:
  • перехватите трафик с использованием инструментов типа Wireshark и убедитесь, что данные передаются по HTTPS

Управление уязвимостями: Регулярно сканируйте систему на наличие уязвимостей и применяйте патчи и обновления. Например:
  • проверьте, что система не содержит известных уязвимостей
  • используйте сканер уязвимостей (например, OWASP ZAP) для сканирования системы на наличие известных уязвимостей

Защита от атак: Проверяйте систему на устойчивость к распространённым атакам, таким как SQL-инъекции, XSS, CSRF, атаки методом грубой силы и т.д. Например:
  • проверьте, что система защищена от SQL-инъекций
  • попробуйте выполнить SQL-инъекцию в поле ввода. Убедитесь, что система правильно обрабатывает ввод и не позволяет выполнять произвольные SQL-запросы

Логи и мониторинг: Убедитесь, что система ведет подробные логи и что они регулярно анализируются на предмет подозрительной активности. Например:
  • проверьте, что система ведет логи и регистрирует подозрительные действия
  • попробуйте выполнить несколько неудачных попыток входа. Убедитесь, что система регистрирует эти попытки в логах.

Управление ошибками: Убедитесь, что система правильно обрабатывает ошибки и не раскрывает лишнюю информацию злоумышленникам. Например:
  • проверьте, что система корректно обрабатывает ошибки и не раскрывает лишнюю информацию
  • вызовите ошибку (например, попробуйте получить доступ к несуществующей странице) и убедитесь, что сообщение об ошибке не раскрывает информацию о внутренней структуре системы.
4. Как составить план тестов на безопасность

Составление плана тестов на безопасность включает несколько ключевых шагов:
  1. Определите, какие аспекты безопасности будут тестироваться и какие ресурсы доступны для этого.
  2. Определите, какие компоненты системы являются критически важными и требуют наибольшего внимания.
  3. Используйте модели угроз и результаты анализа уязвимостей, чтобы определить, какие типы атак наиболее вероятны.
  4. Разработайте конкретные тесты и сценарии, которые будут использоваться для проверки безопасности системы.
  5. Определите, какие ресурсы (люди, инструменты) и сколько времени потребуется для выполнения тестов.
  6. Выполните тесты, фиксируйте результаты и документируйте все обнаруженные уязвимости.
  7. Проанализируйте результаты тестов и подготовьте отчет, включающий рекомендации по устранению обнаруженных проблем.

Чтобы определить, что нужно проверять на безопасность, используйте следующие подходы:
  1. Определите, какие компоненты системы подвергаются наибольшему риску и требуют наибольшего внимания.
  2. Разработайте модели угроз, чтобы понять, какие типы атак наиболее вероятны для вашей системы.
  3. Проведите статический анализ кода, чтобы выявить потенциальные уязвимости в кодовой базе.
  4. Следуйте признанным стандартам безопасности, таким как OWASP Top 10, чтобы убедиться, что вы покрываете все критические области.
Тестирование безопасности - это критически важная часть разработки программного обеспечения, которая помогает защитить данные и системы от угроз. Следуя лучшим практикам, определяя критические компоненты и угрозы, и разрабатывая тщательно продуманные планы тестирования, вы можете существенно повысить безопасность своих проектов. Начните интегрировать тестирование безопасности на ранних этапах разработки, чтобы создать надежные и защищенные системы.

Хотите узнать больше о тестировании безопасности, получить крутой чек-лист с идеями тестов - приходи на наш курс В тестировщики с нуля!
В тестировщики с нуля
  • 320$
    Lite
    Включает в себя:
    - Пакет В тестировщики с нуля
    - Интенсив по GIT
    - 1 месяц стажировки
  • 400$
    Medium
    Включает в себя:
    - Пакет В тестировщики с нуля
    - Интенсив по GIT
    - Доступ к вебинарам
    - 2 месяца стажировки
  • 540$
    Maximum
    Включает в себя:
    - Пакет В тестировщики с нуля
    - Интенсив по GIT
    - Доступ к вебинарам
    - Курс Тестирование API
    - 4 месяца стажировки
Учимся отличать тест-план, тест-кейсы и чек-листы на примерах.
Полезные ресурсы и советы для поиска работы
Выпускник школы QaLearning рассказывает про свой путь обучения, поиска работы и прохождения собеседований. Вы получите много дельных советов!