将 csrf 令牌传递给 Stripe
Posted
技术标签:
【中文标题】将 csrf 令牌传递给 Stripe【英文标题】:Passing csrf token to Stripe 【发布时间】:2013-05-15 06:33:34 【问题描述】:我正在使用 stripe.js 进行条带支付。我需要设置一个回调 wenhook 来接收来自 stripe 的请求。
由于 webhook 是通过条带发布的 - 我已将其标记为 csrf_excempt
。
-
制作此视图
csrf_excempt
是否有任何风险?
如果我应该在此视图上设置 csrf 保护,我如何从条带中传递和取回 csrf 令牌?
【问题讨论】:
这正是 CSRF 令牌要防止的。 看看here @Mounir:这不使用 stripe.js - 我们不想将数据发布到我们的服务器。太多 PCI 合规问题。 @Bibhas:csrf_token 是您和您的用户之间的共享密钥。将其传递给第三方也不是一个好的设计。 @shabda 但您计划将您的令牌传递给第 3 方。即使你这样做了,因为Yuji回答了什么也没关系。 【参考方案1】:正如接受的答案所说,没有办法将 CSRF 令牌与条带回调一起使用。
Stripe Webhook Documentation 中推荐的安全方法是使用传入 webhook 中的 ID 将请求发送回 Stripe 以获取完整的事件详细信息。
【讨论】:
【参考方案2】:您将来可能还想考虑只使用django-stripe-payments。
【讨论】:
【参考方案3】:那是行不通的。绝对禁用来自 Stripe 的回调的 csrf。
即使你..
将csrf_token
传递给条带
找到了一种方法让 Stripe 将相同的令牌发布回您的回调 URL
此时令牌将无关紧要,因为令牌仅适用于您当前的浏览器会话(通常是 cookie)。
CSRF 令牌在每次请求时生成并发送到浏览器以存储在 cookie 中。 Stripe 不会有这个 cookie,因此你会得到一个相同的 CSRF 错误。
【讨论】:
以上是关于将 csrf 令牌传递给 Stripe的主要内容,如果未能解决你的问题,请参考以下文章
如何将 POST 数据中的 CSRF 令牌传递给 Django?