Перейти к содержанию

Определение путей выполнения в приложении

Резюме

Прежде чем начать тестирование безопасности, важно понять структуру приложения. Без полного понимания его компоновки маловероятно, что тестирование будет выполнено тщательно.

Цели тестирования

  • Изучить целевое приложение и понять основные рабочие процессы.

Как тестировать

В тестировании черного ящика очень сложно проверить весь код. Не только потому, что тестировщик не видит, как проходит код в приложении, но даже если бы видел, проверить все пути было бы очень времязатратно. Один из способов справиться с этим — задокументировать все обнаруженные и протестированные пути кода.

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

  1. Пути — тестирование каждого пути в приложении, включая комбинированное и граничное тестирование для каждого решения. Этот подход дает полное покрытие, но количество тестируемых путей возрастает экспоненциально с каждым ответвлением.

  2. Поток данных (или анализ загрязнения) — тестирование присваивания переменных через внешнее взаимодействие (обычно пользователей). Основное внимание уделяется отображению, преобразованию и использованию данных в приложении.

  3. Состязание — тестирование нескольких параллельных экземпляров приложения, манипулирующих одними и теми же данными.

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

Чтобы продемонстрировать охват кода владельцу приложения, тестировщик может начать с таблицы и задокументировать все ссылки, обнаруженные при сканировании приложения (вручную или автоматически). Затем тестировщик может более детально изучить ключевые точки в приложении и выяснить, сколько значительных путей кода было обнаружено. Эти пути должны быть задокументированы в таблице с URL, описаниями и скриншотами.

Код-ревью

Обеспечить достаточное покрытие кода для владельца приложения намного проще с использованием подходов серого и белого ящика. Информация, полученная от тестировщика, гарантирует, что минимальные требования к охвату кода будут выполнены.

Многие современные инструменты динамического тестирования безопасности приложений (DAST) облегчают использование веб-серверного агента или могут сочетаться с сторонним агентом для мониторинга деталей охвата веб-приложения.

Автоматическое сканирование

Автоматический сканер — это инструмент, используемый для автоматического обнаружения новых ресурсов (URL) на определенном веб-сайте. Он начинает с набора URL, называемого семенами, в зависимости от того, как запускается сканер. Хотя существует множество инструментов для сканирования, в данном примере используется Zed Attack Proxy (ZAP): zap.png Zed Attack Proxy (ZAP) предлагает различные опции автоматического сканирования, которые можно использовать в зависимости от потребностей тестировщика:

  • Сканер (Spider) — стандартный инструмент для обнаружения ресурсов на веб-сайте.
  • AJAX Сканер (AJAX Spider) — предназначен для работы с веб-приложениями, которые активно используют AJAX для загрузки данных.
  • Поддержка OpenAPI — возможность интеграции с OpenAPI для тестирования API.

Полезные инструменты

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