Определение путей выполнения в приложении
Резюме
Прежде чем начать тестирование безопасности, важно понять структуру приложения. Без полного понимания его компоновки маловероятно, что тестирование будет выполнено тщательно.
Цели тестирования
- Изучить целевое приложение и понять основные рабочие процессы.
Как тестировать
В тестировании черного ящика очень сложно проверить весь код. Не только потому, что тестировщик не видит, как проходит код в приложении, но даже если бы видел, проверить все пути было бы очень времязатратно. Один из способов справиться с этим — задокументировать все обнаруженные и протестированные пути кода.
Существует несколько подходов к тестированию и измерению охвата кода:
-
Пути — тестирование каждого пути в приложении, включая комбинированное и граничное тестирование для каждого решения. Этот подход дает полное покрытие, но количество тестируемых путей возрастает экспоненциально с каждым ответвлением.
-
Поток данных (или анализ загрязнения) — тестирование присваивания переменных через внешнее взаимодействие (обычно пользователей). Основное внимание уделяется отображению, преобразованию и использованию данных в приложении.
-
Состязание — тестирование нескольких параллельных экземпляров приложения, манипулирующих одними и теми же данными.
Выбор метода и степень его использования должны обсуждаться с владельцем приложения. Можно также использовать более простые подходы, такие как опрос владельца приложения о функциях или участках кода, которые его особенно беспокоят, и о том, как к ним можно добраться.
Чтобы продемонстрировать охват кода владельцу приложения, тестировщик может начать с таблицы и задокументировать все ссылки, обнаруженные при сканировании приложения (вручную или автоматически). Затем тестировщик может более детально изучить ключевые точки в приложении и выяснить, сколько значительных путей кода было обнаружено. Эти пути должны быть задокументированы в таблице с URL, описаниями и скриншотами.
Код-ревью
Обеспечить достаточное покрытие кода для владельца приложения намного проще с использованием подходов серого и белого ящика. Информация, полученная от тестировщика, гарантирует, что минимальные требования к охвату кода будут выполнены.
Многие современные инструменты динамического тестирования безопасности приложений (DAST) облегчают использование веб-серверного агента или могут сочетаться с сторонним агентом для мониторинга деталей охвата веб-приложения.
Автоматическое сканирование
Автоматический сканер — это инструмент, используемый для автоматического обнаружения новых ресурсов (URL) на определенном веб-сайте. Он начинает с набора URL, называемого семенами, в зависимости от того, как запускается сканер. Хотя существует множество инструментов для сканирования, в данном примере используется Zed Attack Proxy (ZAP):
Zed Attack Proxy (ZAP) предлагает различные опции автоматического сканирования, которые можно использовать в зависимости от потребностей тестировщика:
- Сканер (Spider) — стандартный инструмент для обнаружения ресурсов на веб-сайте.
- AJAX Сканер (AJAX Spider) — предназначен для работы с веб-приложениями, которые активно используют AJAX для загрузки данных.
- Поддержка OpenAPI — возможность интеграции с OpenAPI для тестирования API.
Полезные инструменты
- Программное обеспечение для работы с таблицами — для документирования результатов тестирования и анализа данных.
- Программное обеспечение для создания диаграмм — для визуализации архитектуры приложения и путей выполнения.