gpt4 book ai didi

python - 手动CSRF验证

转载 作者:行者123 更新时间:2023-12-01 04:34:28 24 4
gpt4 key购买 nike

我有一个电子商务 Django 应用程序,它使用 CSRFViewMiddleware 自动验证所有传入的 POST 请求以及 CSRF token 。

现在,对于付款,我使用支付网关,将相关详细信息与 csrfmiddlewaretoken 一起传递,以便在第 3 方网站上的交易完成时将其返回给我。因此,当用户重定向回我的网站时,我会得到一个

403 Forbidden
CSRF verification failed. Request aborted.

我该如何解决这个问题?有什么方法可以使用 request.POST.get('csrfmiddlewaretoken') 或类似的方法手动检查 csrftoken

我不想完全绕过 csrf,因为我希望它是安全的(至少,尽可能安全)。

编辑 我了解 csrfmiddleware token 需要在 header 中传递,但我无法这样做,因为我可以使用第 3 方支付网关执行有限的操作。

最佳答案

从这段代码中,我感觉你可能不太明白什么是 CSRF:

I have a e-commerce Django application that automatically verifies all incoming POST requests with CSRF token using the CSRFViewMiddleware.

这就是你的问题所在。 CSRF 仅适用于从您的网站向您的网站发出的请求(请参阅 OWASP's definition of CSRF ):

Cross-Site Request Forgery (CSRF) is a type of attack that occurs when a malicious Web site, email, blog, instant message, or program causes a user’s Web browser to perform an unwanted action on a trusted site for which the user is currently authenticated.

您仅在由您的网站生成并发布到您的网站的表单上需要 CSRF token 。此外,任何发送 POST 请求的 JavaScript 代码也应该受到适当的保护。

对于所有其他端点 - 例如,如果某些支付提供商将结果发布回您的应用程序 - 您不希望启用 CSRF 保护,否则请求将继续失败。

关于python - 手动CSRF验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com