为什么 Sucuri WAF 误报不断阻止 Stripe Webhook 以及阻止它的精确 IP 白名单修复
已发表: 2025-11-13依赖 Stripe 进行在线交易的企业知道无缝 Webhook 通信的重要性。但是,当流行的 Web 应用程序防火墙 (WAF) Sucuri 开始错误地将合法的 Stripe Webhook 识别为威胁时,结果可能是支付中断、交易失败以及不必要的客户支持开销。如果您一直在与这种令人沮丧的情况作斗争,那么您并不孤单 - 值得庆幸的是,有一个精确的解决方案。
长话短说
如果您的 Stripe webhook 由于误报而被 Sucuri WAF 阻止,则问题通常是由于不正确的 IP 白名单或过于严格的 WAF 规则引起的。 Stripe 的服务器通过各种 IP 轮换,这些 IP 必须在 WAF 设置中明确允许。通过使用 Stripe 的官方 IP 地址更新 Sucuri 防火墙并禁用特定的启发式规则,您可以立即解决问题并恢复流畅的 Webhook 功能。
了解问题:Sucuri WAF 和误报
Sucuri 提供针对 DDoS 攻击、网站黑客和其他恶意活动的强大防御。它的工作原理是筛选传入的 HTTP 请求并阻止任何看起来很可疑的内容。虽然这对于阻止不良行为者非常有用,但当 Stripe 等合法服务发送 Webhook 调用时,它可能会适得其反。
Stripe 使用 Webhooks 通知您的服务器重大事件,例如成功付款、失败交易、退款和订阅更改。这些对于自动化流程(例如更新客户记录、库存管理和收入跟踪)至关重要。
当 Sucuri 的规则(尤其是尝试检测 SQL 注入或代码注入的启发式过滤器)错误地将 Stripe 的 Webhook 有效负载分类为恶意时,就会出现问题。
此问题的常见症状包括:
- Stripe 仪表板显示重复的 Webhook 传送失败。
- 服务器日志中看不到来自 Stripe 的传入 POST 请求。
- 由于 403 Forbidden 或超时错误,Stripe 会多次重试请求。
- 来自 Stripe 的电子邮件通知警告 Webhook 失败。
尽管 Sucuri 正在保护您的网站,但它最终可能会表现得有点过于激进 - 阻止它不应该阻止的内容。

确定根本原因:Stripe 引发的误报
当我们深入研究服务器日志和 Sucuri 的仪表板时,问题变得更加清晰。每个 Stripe Webhook 都收到403 Forbidden响应,或者被完全阻止访问服务器。查看 Sucuri 中的事件日志,重复触发以下标志:
- SQLi 启发式模式
- 请求正文大小超出阈值
- POST 请求由于 JSON 格式错误而被阻止(即使 JSON 有效)
Sucuri 使用不断发展的检测算法,有时 Stripe 的 JSON 有效负载包含这些启发式引擎在算法上将其误解为可疑活动的字符或模式(如引号、括号或某些关键字)。这会导致 Sucuri 标记并删除请求,永远不允许它到达您的应用程序。
这在促销活动期间尤其成问题,因为大量交易会产生大量网络挂钩,其中许多都无处可去。
正确的解决方法:精确的 IP 白名单
虽然暂时禁用防火墙或将整个世界的 Webhook URL 列入白名单很诱人,但这是一场安全噩梦。正确且安全的修复涉及几个战略步骤:
1. 检索Stripe的官方IP地址
Stripe 发布了其 webhook 来源的 IP 范围列表。该列表可从他们的官方文档中获取,并定期更新。

截至撰写本文时,以下是示例 IP(注意:这些变化,请务必检查官方来源):
3.18.12.63 3.130.192.231 13.235.14.237 13.235.122.149 18.211.135.69 35.154.171.200 52.15.183.38
2.登录Sucuri的仪表板
转到 Sucuri 防火墙设置并找到“访问控制”下的“白名单”部分。在这里,您可以手动输入您想要允许通过的确切 IP,绕过所有 WAF 检查。
3.将Stripe的所有IP添加到白名单
确保 Stripe 提供的每个 IP 块都添加到白名单中。 Sucuri 进行硬匹配,因此即使缺少一个 IP 也可能导致随机 Webhook 事件间歇性失败。
4. 禁用 Webhook 端点的阻止操作
在 Sucuri 的URL 路径配置中,您可以添加 Webhook 侦听器端点(例如 /stripe/webhook)并仅针对该路径禁用特定的 WAF 规则。这可以避免全局关闭防火墙,同时确保 Stripe 的请求不会被不必要地阻止。这里最有用的设置是:
- 禁用该特定路径的启发式过滤。
- 如果您的 Stripe 事件包含大量元数据的有效负载,则允许更大的 POST 正文大小。
这将确保端点不受干扰地接受复杂的 JSON 有效负载。

额外提示:使用 Stripe 的签名秘密
即使将 Stripe 的 IP 列入白名单后,验证每个收到的 Webhook 请求的真实性仍然是明智之举。 Stripe 提供了一个签名密钥,允许您的服务器以加密方式验证 Webhook 负载。
这有助于确保即使某些其他来源欺骗了 Stripe 的 IP 并访问您的 webhook URL(不太可能,但有可能),他们的请求也将无法通过签名验证。请按照此处的 Stripe 指南来实施它。
影响:正确的白名单解决了什么问题
在 Sucuri 防火墙内配置所有 Stripe 的 IP 并调整 Webhook 端点的 WAF 规则行为后,问题完全消失。 Webhooks 立即开始得到确认,Stripe 的重试机制不再活动,并且没有事件丢失。
在工作流程和用户体验方面——
- 客户不再看到延迟的付款确认。
- 有关失败订阅的支持票已删除。
- 新用户帐户创建等后端自动化再次可靠地运行。
关于自动化的注释
由于 Stripe 的 IP 列表可能会不断变化,因此最好设置季度日历提醒来检查更新。不幸的是,Sucuri 不提供基于 API 的白名单自动化,因此该过程仍然是手动的。如果您想避免另一轮 Webhook 传递失败,那么积极主动地应对这一点至关重要。
最后的想法
Sucuri WAF 是确保 Web 财产安全的强大工具,但没有任何安全系统是万无一失的。误报,尤其是 Stripe 等合法服务的误报,可能会导致真正的业务摩擦。借助正确的 IP 和一些 WAF 规则自定义,您可以保持支付处理的简化和安全。
请记住:安全性不一定要以牺牲功能为代价。通过仔细配置,您可以保持两者和谐。
