跳至內容
Astera Technology

Webhook 重放攻擊與重複傳送怎樣分辨

每次收到都先核實,再查持久保存的事件紀錄,避免已完成操作重做。

簽署有效與工作已做過,是兩個問題

Stripe 的簽署包含時間戳記,用來限制重放攻擊,但不能代替重複事件核對。正常重送可能有新的傳送簽署,事件本身卻已處理。以下是自行設計的本地記錄。

假設傳送核對表
傳送情況核實事件紀錄操作
EV-21,新簽署請求通過未有紀錄先取得處理權才執行
EV-21,正常重送通過已完成確認收件,不重做業務操作
擷取的舊請求超出已設定且受支援的時間容許範圍任何狀態按驗證失敗處理
下載可編輯 CSV ↓

兩個接收程序不能同時取得處理權

同一範圍的事件編號只可有一個處理權。收件、處理中及完成要分開。工作程序若在外部操作後停下,先核對結果才解除處理權;直接刪除事件紀錄可能令操作重做。

兩個程序同時收到同一有效事件,只查「未有紀錄」是否足夠?

查看參考答案

不足夠,兩邊都可能查到沒有紀錄。須用唯一限制或交易取得處理權,另一邊按既有狀態處理;測試只產生一次業務結果。

相關資源