CAPTCHA 身份验证

基于 CAPTCHA 的登录增加了额外的安全层,可防止自动化机器人访问,但也增加了 DAST 工具在扫描前进行身份验证的复杂性。当登录流程包含基于图像或文本的 CAPTCHA 或 reCAPTCHA 质询时,AppScan 提供了在扫描期间可靠地录制和重放这些流程的机制。

注:
CAPTCHA 质询仅用于登录目的。

如果您的应用程序的登录表单需要在提交前解决 CAPTCHA,请参阅此页面。本页面介绍了支持的 CAPTCHA 类型、配置要求、限制以及帮助扫描顺利进行所需的故障排除步骤。虽然某些 CAPTCHA 质询(例如文本或简单的图像谜题)可以通过自动化或 AI 辅助技术来处理,但基础设施级别的 CAPTCHA(例如 reCAPTCHA v2/v3 或基于行为的质询)通常需要特定配置才能保持扫描的连续性。了解这些机制的工作原理对于在 DAST 扫描期间成功进行身份验证和实现完整覆盖至关重要。

注:
AppScan Standard 模板中使用启用了 CAPTCHA 的登录方式的模板不受 AppScan Enterprise 支持。

支持的 CAPTCHA 类型

AppScan支持以下 CAPTCHA 实现:

  • CAPTCHA v1(基于 AI 的图像识别)

  • reCAPTCHA v2(基于质询:交互式复选框)

  • reCAPTCHA v3(基于行为:不可见评分)

CAPTCHA v1(基于 AI)

  • 概述:CAPTCHA v1 通过使用 AppScan基于 AI 的识别引擎来解决。
  • 配置:
    • 确保已配置 AI 提供程序。否则,CAPTCHA 解决将在登录记录期间失败。
    • MFA 配置页面上启用 CAPTCHA。
  • 需要手动配置时:如果自动检测失败:

    • 手动指定图像元素 ID输入字段 ID,然后记录登录。

    • (可选)切换到更大或更高级的 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

      • 不支持自动登录。

      • 它不适用于外部浏览器。

故障诊断

注:
要检查 是否AppScan检测到 CAPTCHA 或是否正确填写了它,请将 SessionManagement:ShowActionBasedPlayerWindow(从“工具”>“选项”>“高级”中)设置为“True”,以查看记录操作的重放并识别问题。
1. CAPTCHA 故障诊断
问题 可能原因 建议操作
CAPTCHA v1 在登录期间失败 AppScan无法将图像或输入文本识别为 CAPTCHA 元素。 识别 CAPTCHA 图像和文本的 HTTP 参数 ID,并手动添加它。有关更多信息,请参阅如何识别 CAPTCHA HTTP 参数

AI 模型无法解决复杂的图像

切换到更大或更高级的 AI 模型。(例如,GPT-4 与 mini 模型)。默认模型在处理困难图像时可能会失败。

reCAPTCHA v2/v3 在登录记录或回放期间失败

reCAPTCHA 未完全初始化或验证。

再次记录登录。初始化延迟很常见。
reCAPTCHA 身份验证因允许列表问题而失败
  1. 等待允许列表生效,然后重试。

  2. 验证计算机的公共 IP 是否与 Google Cloud 控制台中的允许列表 IP 匹配。

未捕获会话上下文 再次记录登录,并在登录后选择不同的页面(例如,主页)。
登录流程中的计时延迟 增加基于操作的延迟(高级配置)。

回放期间的计时延迟

在 CAPTCHA 步骤之前插入手动等待操作。
页面加载太慢,导致 CAPTCHA 无法初始化 在 CAPTCHA 交互之前添加更长的爬虫延迟或显式等待(例如 10 秒)。

如何识别 CAPTCHA HTTP 参数

AppScan需要知道包含 CAPTCHA 的参数名称,以便它可以登录到应用程序。它通常在验证记录的登录过程时识别此参数。如果它没有识别,或者如果您使用自动登录,则必须自己添加该参数。

  1. 打开浏览器并转到应用程序的登录页面。
  2. F12 打开浏览器的开发者工具窗格(通常位于主浏览器窗格的右侧或下方)。
  3. 单击“元素”选项卡以查看 HTML 代码。当您选择代码的一部分时,相应元素会在主浏览器窗格中突出显示。
  4. 找到 CAPTCHA 元素并确定其 id

    示例:

    <img id="captchaImage" src="./captcha?ts=1782734992413" alt="Captcha" width="180" height="56">
  5. id 参数的值(不带引号)就是您需要的 CAPTCHA HTTP 参数。

    示例:

    captchaImage