CAPTCHA 身份验证
基于 CAPTCHA 的登录增加了额外的安全层,可防止自动化机器人访问,但也增加了 DAST 工具在扫描前进行身份验证的复杂性。当登录流程包含基于图像或文本的 CAPTCHA 或 reCAPTCHA 质询时,AppScan 提供了在扫描期间可靠地录制和重放这些流程的机制。
如果您的应用程序的登录表单需要在提交前解决 CAPTCHA,请参阅此页面。本页面介绍了支持的 CAPTCHA 类型、配置要求、限制以及帮助扫描顺利进行所需的故障排除步骤。虽然某些 CAPTCHA 质询(例如文本或简单的图像谜题)可以通过自动化或 AI 辅助技术来处理,但基础设施级别的 CAPTCHA(例如 reCAPTCHA v2/v3 或基于行为的质询)通常需要特定配置才能保持扫描的连续性。了解这些机制的工作原理对于在 DAST 扫描期间成功进行身份验证和实现完整覆盖至关重要。
支持的 CAPTCHA 类型
AppScan支持以下 CAPTCHA 实现:
-
CAPTCHA v1(基于 AI 的图像识别)
-
reCAPTCHA v2(基于质询:交互式复选框)
-
reCAPTCHA v3(基于行为:不可见评分)
CAPTCHA v1(基于 AI)
reCAPTCHA v2 和 v3(基于基础设施)
- 概述:为使用 reCAPTCHA v2/v3 的应用程序自动执行登录需要绕过质询。这是通过在 Google Cloud 中配置 IP 允许列表来完成的,以便 Google 将AppScan流量视为受信任的流量。
-
配置要求:
-
与网站所有者确认 reCAPTCHA 密钥对于正确的域是有效且活动的。
-
确定将使用的AppScan公共 IP 地址。
-
当网站所有者启用 IP 检查时,质询令牌会绑定到原始 IP 地址。如果扫描程序的 IP 在此过程中发生变化(例如,由于负载平衡或多节点扫描),验证将失败。要解决此问题,请在提供程序的控制台(例如 Google Cloud 控制台)中手动将扫描程序的公共 IP 地址或子网添加到允许列表,以确保原始 IP 是受信任的。
- 不能使用本地或私有 IP 地址。
- 对于 reCAPTCHA v2,仅使用 AppScan 浏览器进行手动记录来开始登录记录。
-
-
限制:
-
reCAPTCHA v2
-
不支持自动登录。
-
它不适用于外部浏览器。
-
-
故障诊断
| 问题 | 可能原因 | 建议操作 |
|---|---|---|
| CAPTCHA v1 在登录期间失败 | AppScan无法将图像或输入文本识别为 CAPTCHA 元素。 | 识别 CAPTCHA 图像和文本的 HTTP 参数 ID,并手动添加它。有关更多信息,请参阅如何识别 CAPTCHA HTTP 参数。 |
|
AI 模型无法解决复杂的图像 |
切换到更大或更高级的 AI 模型。(例如,GPT-4 与 mini 模型)。默认模型在处理困难图像时可能会失败。 |
|
| reCAPTCHA v2/v3 在登录记录或回放期间失败 |
reCAPTCHA 未完全初始化或验证。 |
再次记录登录。初始化延迟很常见。 |
| reCAPTCHA 身份验证因允许列表问题而失败 |
|
|
| 未捕获会话上下文 | 再次记录登录,并在登录后选择不同的页面(例如,主页)。 | |
| 登录流程中的计时延迟 | 增加基于操作的延迟(高级配置)。 | |
|
回放期间的计时延迟 |
在 CAPTCHA 步骤之前插入手动等待操作。 | |
| 页面加载太慢,导致 CAPTCHA 无法初始化 | 在 CAPTCHA 交互之前添加更长的爬虫延迟或显式等待(例如 10 秒)。 |
如何识别 CAPTCHA HTTP 参数
AppScan需要知道包含 CAPTCHA 的参数名称,以便它可以登录到应用程序。它通常在验证记录的登录过程时识别此参数。如果它没有识别,或者如果您使用自动登录,则必须自己添加该参数。
- 打开浏览器并转到应用程序的登录页面。
- 按 F12 打开浏览器的开发者工具窗格(通常位于主浏览器窗格的右侧或下方)。
- 单击“元素”选项卡以查看 HTML 代码。当您选择代码的一部分时,相应元素会在主浏览器窗格中突出显示。
- 找到 CAPTCHA 元素并确定其
id。示例:
<img id="captchaImage" src="./captcha?ts=1782734992413" alt="Captcha" width="180" height="56"> - id 参数的值(不带引号)就是您需要的 CAPTCHA HTTP 参数。
示例:
captchaImage