我有一个webhook视图,它接收来自支付网关的POST
个请求。它识别客户并使用提供的数据更新金额。
如果webhook URL以某种方式泄露,这可以很容易地被利用。
例如
curl --data "cust_no=xxxxxxxxxx&amount=1000" https://example.com/wallet/payment_webhook/
如何使其安全,以便不接受此类请求?它应该验证请求仅来自支付网关。
更新
webhook请求包含交易详细信息以及客户编号。
答案 0 :(得分:1)
明确记录在webhooks documentation:
上最佳做法
[...]
为了获得最佳安全性,您可以在对其进行操作之前使用Stripe确认事件数据。为此:
- 按上述方式解析JSON数据。
- 抓取收到的
Event
对象ID值。- 在检索事件API调用中使用
Event
对象ID。- 使用返回的
醇>Event
对象执行操作。
有关工作示例,另请参阅Webhook-Mailer。请特别注意this line:
# Retrieving the event from the Stripe API guarantees its authenticity
event = Stripe::Event.retrieve(data[:id])