如何使用Stripe在Django中保护webhook

时间:2016-01-27 14:31:07

标签: python django stripe-payments payment

我有一个webhook视图,它接收来自支付网关的POST个请求。它识别客户并使用提供的数据更新金额。

如果webhook URL以某种方式泄露,这可以很容易地被利用。

例如

curl --data "cust_no=xxxxxxxxxx&amount=1000" https://example.com/wallet/payment_webhook/

如何使其安全,以便不接受此类请求?它应该验证请求仅来自支付网关。

更新

webhook请求包含交易详细信息以及客户编号。

1 个答案:

答案 0 :(得分:1)

明确记录在webhooks documentation

  

最佳做法

     

[...]

     

为了获得最佳安全性,您可以在对其进行操作之前使用Stripe确认事件数据。为此:

     
      
  1. 按上述方式解析JSON数据。
  2.   
  3. 抓取收到的Event对象ID值。
  4.   
  5. 在检索事件API调用中使用Event对象ID。
  6.   
  7. 使用返回的Event对象执行操作。
  8.   

有关工作示例,另请参阅Webhook-Mailer。请特别注意this line

# Retrieving the event from the Stripe API guarantees its authenticity  
event = Stripe::Event.retrieve(data[:id])