testing - ZAP:混合手动浏览、主动扫描和模糊测试来测试一个非常大的 Web 应用程序?
问题描述
我们有一个非常大的 Web 应用程序,有大约 1000 个页面要测试(www.project-open.com,服务公司的项目 + 财务管理应用程序)。每个页面可能有多个参数(对象 ID、过滤器、用于排序的列名,...)。我们现在要对这些参数实施额外的安全检查,因此我们需要系统地测试 a) 攻击性参数值被拒绝和 b) 应用程序实际使用的参数值是否被正确接受。
示例:我们可能想说页面中的 sort_column 参数应该只包含字母数字字符。但现实中的应用程序可能包含一个带有空格的列名,从而导致误报安全警报(空格字符不是字母数字字符)。
我对此进行测试的想法是 1) 在代理模式下手动导航到这些页面中的每一个,2) 告诉 ZAP 开始对该页面上的所有链接进行一到两个级别的爬网,以及 3) 告诉 ZAP 开始对这些 URL 进行模糊测试。
如何实施?我对 ZAP 有了基本的了解,并对]project-open[ 进行了一些安全测试。我已经阅读了用于扫描 URL 列表的 ZAP 扩展,但在我们的例子中,我们希望对这些 URL 中的每一个执行一些特定的 ZAP 操作......
解决方案
我将总结您的一些选择:
我将首先使用 ZAP 桌面,以便您可以控制它并确切了解它的效果。您可以启动浏览器,探索您的应用程序,然后主动扫描您找到的网址。标准蜘蛛会非常有效地探索传统应用程序,但大量使用 JavaScript 的应用程序可能需要 ajax 蜘蛛。
您还可以使用“攻击模式”来攻击您通过 ZAP 代理的范围(您定义的)范围内的所有内容。这只是意味着 ZAP 有效地遵循您的操作并攻击任何新事物。如果您不探索应用程序的一部分,那么 ZAP 不会攻击它。
如果您想实现自己的测试,那么我会看看创建脚本化的主动扫描规则。我们可以帮助您解决这些问题,但我现在只是从探索您的应用程序并运行默认规则开始。
推荐阅读
- python - 为什么在导入 Qiskit 时出现导入错误?
- python - PyCharm 中的项目文件窗口为黄色
- graphql - GraphQL/Apollo-Server-Express 错误:不能为不可为空的字段返回 null 突变数据:null
- c - 无法编译链接 openssl 的 .c 程序
- xml - 如何使用 XSLT 将特定块包装在 XML 文档中
- c# - 您将如何确定是否为变量类型(不是预先知道的类型)实现了泛型类型接口?
- javascript - 如何在不使用“i-1”、“i-2”等的情况下动态引用数组中的先前项目?
- amazon-web-services - 设置 cloudflare 记录以指向 AWS 全球加速器?
- mongodb - 如何根据用户查找 JSON 条目?
- numpy - xtensor 相当于 numpy a[a>3] = 1