将 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的主要内容,如果未能解决你的问题,请参考以下文章

将 csrf 令牌传递给客户端应用程序

将 csrf 令牌传递给 blueimp 文件上传

如何将 POST 数据中的 CSRF 令牌传递给 Django?

使用 CSRF_COOKIE_HTTPONLY 将 Django CSRF 令牌传递给 Angular

在 Alamofire 请求参数中传递 CSRF 令牌

VueJS 和 express 传递 csrf 令牌发布