OTPで保護されたWebアプリケーションの監視方法

One-Time Password

如果你曾经使用过网上银行应用完成交易,或者在电子商务平台上结账,那么你很可能已经使用或接触过受到 OTP(一次性密码)保护的应用。

一次性密码(OTP)是大多数多因素身份验证(MFA)系统的核心。OTP 是通过短信、电子邮件、身份验证器应用、推送通知等方式发送的临时代码。OTP 可以降低凭据被盗的风险,并已成为在线应用的标准要求。

然而,对于用户来说增强了安全性,但对运维操作而言却带来了复杂性。OTP 天然具有不可预测性,因此无法很好地适用于传统的监控方式。自动健康检查依赖可重复的登录流程,而 OTP 刻意阻止这一点。如果你在监控中忽略 MFA,就会留下盲区。

本文将探讨如何有效监控受到 OTP 保护的应用。我们将涵盖各种 OTP 类型面临的实际挑战,探讨两种实际可行的方法(模拟 OTP 发送与为信任的监控器绕过 MFA),并概述确保监控安全的防护机制。目标是展示组织如何同时保持用户 MFA 安全性和运维可见性(并介绍如何使用包括 Dotcom-Monitor 在内的多种工具实现这些目标)。

OTP 如何使监控复杂化

合成监控依赖可重复性,而 OTP 的设计初衷正好相反。每一个代码都是唯一的、短暂的,通常由你无法控制的第三方系统发送。这会使监控变得困难、混乱,甚至在某些情况下根本无法进行。

推送验证 就是一个典型例子。用户登录后,服务器会调用 Apple Push Notification Service (APNS) 或 Firebase Cloud Messaging (FCM),然后身份验证器应用会提示用户点击“批准”。对用户而言,这个过程无缝;但对监控脚本来说,这是个死胡同:既没有代码可捕获,也无法虚拟“点击批准”。除非开发人员提供一个可确定地批准请求的模拟端点,否则基于推送的 MFA 无法进行合成测试。

短信 OTP 仍然在金融服务、医疗门户和政府平台中广泛使用。在此情况下,监控是可行的:配置一个专用号码,集成 Twilio 或 Vonage 等 API,程序化地获取短信并提交 OTP。这不仅验证你的应用,也验证短信网关和运营商网络。然而其缺点也很明显:每条短信都有成本,不同地区运营商的可靠性差异较大,而发送延迟则可能导致误报。

电子邮件 OTP 是许多 SaaS 提供商的默认选项,避免了电信复杂性。可以配置一个专用于测试账户的邮箱,通过 Mailgun、SendGrid API 或 IMAP/POP 轮询来接收 OTP。这种方式可以让你监控 SMTP 基础设施、邮件队列和垃圾邮件过滤机制。但电子邮件本身存在延迟和不稳定性:有时几秒内送达,有时却要几分钟。灰名单、反垃圾邮件过滤或限速也可能导致间歇性失败。

基于时间的一次性密码(TOTP) 被用于像 Google Authenticator、Authy 或 Microsoft Authenticator 这样的身份验证器应用中。基于共享密钥和当前时间,这些代码每隔 30–60 秒更新一次。只要监控代理存储了密钥,就可以生成这些代码。然而安全团队会担心将 MFA 密钥保存在非安全设备中。即使仅限于测试账户,也需要使用安全存储、严格作用域和频繁轮换来降低风险。

基于计数器的 OTP(HOTP),也被称为哈希一次性密码,通常用于受监管行业中的硬件令牌。它基于一个共享密钥和每次使用后递增的计数器。如果能追踪计数器状态,理论上是可以监控的。但同步问题非常棘手:一旦跳过某个计数器值,后续所有尝试都会失败,直到重新同步。这种脆弱性使得 HOTP 不适合作为持续的合成监控基础。

因此,组织首先需要明确:他们试图解决什么问题。

两种 OTP 监控策略

两种监控目标常常被混淆:

  1. 传送保障:用户是否确实能通过短信、电子邮件或其他渠道收到 OTP?
  2. 可用性与性能:应用是否可以完成登录并继续执行关键工作流程?

这两者都很重要,但需要不同的策略。试图用一个测试同时解决两者问题只会得到不可靠的结果。

策略 A:模拟 OTP 传送

当你关注的问题是传送保障时,唯一的办法是模拟真实用户行为。这意味着需要配置你的监控代理来从短信或电子邮件中获取 OTP。

对于 短信监控,标准流程是:

  • 为监控环境分配一个专用号码;
  • 触发一次登录流程,并通过提供商 API(如 Twilio、Vonage、Nexmo)捕获 OTP;
  • 解析消息并提交代码。

这个流程可以验证应用、短信网关和运营商网络。你也可以直接了解用户是否能及时收到 OTP。但这也带来了权衡:每条短信的成本、不同运营商之间传送时间的不一致,以及电信系统短暂故障带来的噪声。

对于电子邮件监控:配置一个专用于测试账户的邮箱,通过 API 或 IMAP/POP 检索 OTP。这样可以验证 SMTP 基础设施、邮件队列和垃圾过滤器。监控代理不仅能确认应用是否发送了 OTP,还能确认是否被收到。但电子邮件的波动很大。今天可能几秒内收到,明天却可能延迟几分钟。垃圾过滤器或灰名单机制也增加了不确定性。

TOTP 模拟 是在安全团队接受风险的前提下,对测试账户的一种可选方案。将共享密钥存储在安全保管库中,使用库生成代码并提交。风险缓解策略包括:限制使用范围、频繁轮换密钥,仅使用专用非生产账户。由于计数器同步问题,HOTP 模拟通常不可行。

没有开发者明确支持,推送验证无法被有意义地模拟。

关键原则: 将 OTP 模拟视为一种 传送验证,而不是在线率监控工具。每 5 分钟运行一次短信或电子邮件检查将产生噪声。每小时或每天运行一次可以提供有关提供商健康状况的有用信号,而不会给运维团队带来负担。

策略 B:为监控代理绕过 OTP

当问题是可用性与性能时,模拟 OTP 是错误的工具。相反,你需要一种机制,使受信的监控代理可以在不使用 OTP 的情况下完成登录,同时仍对真实用户强制执行 MFA。

预设 HTTP 标头 是最简单的绕过方式。监控代理发送一个秘密标头,服务器将其视为已通过 MFA。这种方式易于实现,但必须限制为白名单 IP,并在边缘层移除所有其他流量中的标头。否则,它就是一个后门。

签名 Cookie 或 JWT 是更强的选择。监控代理提供一个带有“已通过 MFA”声明的签名令牌。服务器验证签名并允许登录。令牌应短期有效、范围受限,并使用轮换密钥签名。这可降低伪造风险,并支持持续监控。

临时 OTP 交换端点 是进一步的做法。监控代理通过 API 密钥或客户端证书进行身份验证,请求一个绕过令牌,并使用一次后失效。令牌很快过期且无法复用。这种方法非常安全,但需要一定的开发资源构建和维护。

编程登录 API 常见于 API 驱动的应用中。一个专用端点返回一个已标记为 MFA 验证通过的会话。该端点应强身份验证、不可公开文档化,且只用于监控账户。

魔法链接 是另一种模式。监控代理请求一个一次性短期有效的 URL,用于自动登录。只要链接难以猜测并快速过期,这种方式是安全的。但链接必须视为凭证,任何泄漏都相当于凭证泄露。

白名单测试账户 是实际中最简单的绕过方式。某些账户在监控 IP 下可免除 OTP。这种配置容易实现,但风险最大。必须确保这些账户隔离、使用强密码并定期审计。

此外还有其他机制。使用 Cypress 或 Playwright 进行会话预加载,可以将预认证的会话或 Cookie 加载到浏览器中。这种方式无需 OTP,但需要精细管理会话过期。在低环境中,还可以通过反向代理自动为来自监控 IP 的请求添加绕过标头或 Cookie。这在 staging 环境中很有用,但绝不应扩展到生产环境。

OTP 登录监控中的安全绕过防护措施

绕过机制只有在严格防护机制下才可接受:

  • 范围限制:仅允许已知监控 IP 或网络使用绕过。应在 CDN 或网关层强制执行。
  • 令牌短效:Token、Cookie 和标头必须快速过期并定期轮换。
  • 身份隔离:监控账户必须与生产用户完全分离。不得重复使用凭证。
  • 持续审计:记录每一次绕过尝试的账户、IP 和时间戳等元数据。定期审查日志。
  • 边缘过滤:从所有非监控请求中剥离绕过标头或 Cookie。

没有上述措施,绕过将削弱 MFA。配合上述措施使用,它们可以成为安全、可审计的可靠监控工具。

运维中实现平衡监控方法

最有效的监控策略通常结合两种方法:

传送验证:低频短信与邮件模拟验证用户是否能收到 OTP。它能发现运营商、网关或邮件服务器的问题。

可用性验证:高频绕过检查确认应用可访问,登录流程成功进行,且不会受到外部提供商干扰。这种双重策略可以确保真实用户强制启用 MFA,同时运维团队拥有完整可见性。

OTP 监控与测试工具

内部实现 OTP 模拟和绕过功能需要大量工程投入。Dotcom-Monitor 提供的 UserView 和 LoadView 平台分别承担不同但互补的角色。

UserView:持续可用性与传送验证工具

Dotcom-Monitor 的 UserView 是一款 Web 应用监控平台,可模拟真实用户交互并持续验证性能与在线状态。这正是 OTP 模拟绕过策略 实现的地方。

  • 针对 OTP 传送验证(策略 A): 使用 UserView(通常也称为 EveryStep)你可以录制包含登录流程的多步骤用户行为。在此工具中,可配置步骤以等待和提取通过电子邮件发送的 OTP。平台会从指定邮箱中检索代码并输入到表单中。
  • 针对高可用性监控(策略 B): UserView 非常适合实现安全绕过。在基于时间的 OTP(TOTP)场景中,平台可以将共享密钥存储在加密保管库中。测试过程中,监控代理使用该密钥生成正确的 OTP 并注入登录流程。这避免了短信或邮件传送,从而实现可频繁执行、无干扰的测试。

LoadView:OTP 负载与压力测试工具

Dotcom-Monitor 的 LoadView 平台专为负载与压力测试构建。它可以模拟数千名用户以测试应用的性能与可扩展性。

  • 容量测试:在重大事件、促销或产品发布前,组织可以使用 LoadView 模拟大量用户同时登录。这种测试可检测认证服务器和后端是否能承受高负载,并在影响真实用户之前识别潜在故障点。
  • 认证服务器抗压测试:LoadView 可专门针对登录端点进行配置,使用 OTP 绕过策略或模拟 OTP 发送方式进行测试,以获得更贴近现实的场景。这可确保即使在高压下,认证系统依然响应正常。

OTP 监控的未来展望

随着 MFA 的发展,新模型将带来类似的监控挑战。FIDO2 与 WebAuthn 正逐步被采用,使用公钥密码学代替 OTP。这些方法增强了安全性,但使合成监控更加复杂。绕过将仍是实际可行的解决方案,而模拟方式将更侧重于设备注册流程而非 OTP 传送。

组织应以灵活性设计监控体系:MFA 方法会不断变化,但在用户安全与运维可见性之间寻求平衡的需求永远不会改变。

结论

OTP 是现代身份验证的重要组成部分。它们保护用户安全,但如果监控策略没有与时俱进,也可能使运维团队变得“盲目”。

关键在于分离:适度地模拟 OTP 以验证传送渠道通过受控、可审计的绕过机制实现持续可用性监控。结合这两种方式,才能同时保护用户安全与系统可见性。

借助 Dotcom-Monitor UserView,运维团队可以根据需要自由选择:在需要时验证 OTP 渠道,或通过安全绕过路径高频监测。无论哪种方式,都能同时保障用户安全与系统监控。

Latest Web Performance Articles​

OTPで保護されたWebアプリケーションの監視方法

OTPで保護されたWebアプリケーションの稼働時間とパフォーマンスを監視する方法を学びましょう。OTP監視が必須である理由を確認し、ベストプラクティスやその他のヒントを入手してください!

Start Dotcom-Monitor for free today​

No Credit Card Required