跳转到内容
搜索文档

泄露凭据检测

最后更新 查看 MarkdownAgent 设置

泄露凭据流量检测会扫描传入请求,查找此前在数据泄露中泄露的凭据(用户名和密码)。

工作原理

启用泄露凭据检测后,Cloudflare 会扫描传入 HTTP 请求中的用户名和密码。扫描会检查常见 Web 应用程序的身份验证模式以及您配置的任何自定义检测位置

检测到的凭据会与已知泄露凭据数据库进行比对。该数据库包括:

  • Have I Been Pwned (HIBP) 匹配密码数据集(仅密码)
  • Cloudflare 收集的凭据(用户名)
  • 泄露凭据对(用户名和密码)

根据结果,Cloudflare 会为已扫描的请求填充泄露凭据字段。您可以通过两种方式使用这些字段:

  • 分析流量:在 Security Analytics 仪表板中审查检测结果,了解泄露凭据在您的流量中出现的频率。
  • 创建规则:在自定义规则速率限制规则中使用这些字段,以质询或拦截包含已泄露凭据的请求。

泄露凭据可能因不同原因出现在您的流量中。攻击者可能正在进行凭据填充攻击,或者合法用户可能在重复使用此前已泄露的密码。

通知您的源站

泄露凭据检测提供一个托管转换,向匹配的请求添加 Exposed-Credential-Check 请求标头。标头值指示泄露内容 — 例如,如果用户名和密码均为泄露对则为 1,如果用户名已泄露则为 2,如果仅密码已泄露则为 4

您可以在源站使用此标头警告用户并提示他们重置密码。

可用性

有关各计划可用功能的详细信息,请参阅流量检测页面中的 Availability

默认扫描位置

泄露凭据检测包含用于在以下知名 Web 应用程序的 HTTP 请求中识别凭据的规则:

  • Drupal
  • Joomla
  • Ghost
  • Magento
  • Plone
  • WordPress
  • Microsoft Exchange OWA

此外,扫描还包含适用于其他常见 Web 身份验证模式的通用规则。

您也可以配置自定义检测位置,以适配 Web 应用程序中使用的特定身份验证机制。自定义检测位置会告诉 Cloudflare WAF 在 Web 应用程序的 HTTP 请求中何处查找用户名和密码。

自定义检测位置

默认扫描覆盖常见 Web 应用程序,但您的应用程序可能以不同的格式或字段名发送凭据。自定义检测位置允许您确切告诉 Cloudflare 在 HTTP 请求中何处查找用户名和密码。

例如,如果对用户进行身份验证的 HTTP 请求 JSON 正文如下所示:

{ "user": "<username>", "secret": "<password>" }

您可以使用以下设置配置自定义检测位置:

  • 用户名的自定义位置:
    lookup_json_string(http.request.body.raw, "user")
  • 密码的自定义位置:
    lookup_json_string(http.request.body.raw, "secret")

指定自定义检测位置时,仅要求用户名字段的位置。

下表包含不同类型请求的检测位置示例:

请求类型 用户名位置 / 密码位置
JSON 正文 lookup_json_string(http.request.body.raw, "user")
lookup_json_string(http.request.body.raw, "secret")
URL 编码表单 url_decode(http.request.body.form["user"][0])
url_decode(http.request.body.form["secret"][0])
Multipart 表单 url_decode(http.request.body.multipart["user"][0])
url_decode(http.request.body.multipart["secret"][0])

用于指定自定义检测位置的表达式可以包含以下字段和函数:

有关配置自定义检测位置的说明,请参阅快速入门

泄露凭据字段

以下字段指示 Cloudflare 检测到的泄露凭据匹配类型。在自定义规则速率限制规则中使用这些字段,以对包含已泄露凭据的请求采取措施。

字段 描述
Password Leaked
cf.waf.credential_check.password_leaked
Boolean
指示请求中检测到的密码是否此前已泄露。
所有计划均可用。
User and Password Leaked
cf.waf.credential_check.username_and_password_leaked
Boolean
指示请求中检测到的用户名-密码对是否此前已泄露。
需要 Pro 或更高计划。
Username Leaked
cf.waf.credential_check.username_leaked
Boolean
指示请求中检测到的用户名是否此前已泄露。
需要 Enterprise 计划。
Similar Password Leaked
cf.waf.credential_check.username_password_similar
Boolean
指示请求中检测到的用户名和密码凭据的相似版本是否此前已泄露。
需要 Enterprise 计划。
Authentication detected
cf.waf.auth_detected
Boolean
指示 Cloudflare 是否在请求中检测到身份验证凭据。
需要 Enterprise 计划。

这篇文档对您有帮助吗?