為什麼 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 規則自定義,您可以保持支付處理的簡化和安全。

請記住:安全性不一定要以犧牲功能為代價。通過仔細配置,您可以保持兩者和諧。