程序员可能想要使用csrf_exempt的一些例子是什么?

时间:2016-03-29 16:11:55

标签: python django csrf csrf-protection django-csrf

默认情况下,Django通过向其生成的网页发送Cross-Site Request Forgery (CSRF) attacks来提供针对CSRF token的保护,然后将其发送回请求以验证它们。这是详细的here

Django提供csrf_exempt装饰器来禁用此行为。 程序员可能想要使用它的好理由是什么?

This详细说明了它可能是危险的,我对它如何有用感兴趣。

我正在寻找不明显的答案(例如,不知道如何使用CSRF保护或暂时禁用它)。

3 个答案:

答案 0 :(得分:2)

例如,我们将它用于另一方以编程方式发布数据的接口。因此,他们永远无法获得csrf令牌。但是,该页面是基本身份验证的。

答案 1 :(得分:2)

我正在研究的项目中有一些微型嵌入式设备通过VPN将HTTP与django应用服务器通信。这些HTTP客户端非常原始,因此我们禁用CSRF。

答案 2 :(得分:1)

每当您的客户端向服务器发送请求时,一些机密信息将与请求一起发送。 CSRF令牌可防止恶意站点滥用该信息。特别是,这可以防止恶意站点发送使用您的cookie和/或会话的伪造请求来验证您的客户端并授权该操作。客户端每次请求时自动和隐式发送的任何信息都容易受到CSRF攻击(尽管并非所有信息在这种攻击中都可能有用)。

当且仅当来自请求的服务器端操作不依赖于由隐式发送的身份验证和授权时,@csrf_exempt装饰器可以安全地用于避免CSRF保护机制。客户。示例是基于令牌的身份验证和HTTP基本身份验证。对于这些形式的身份验证,客户端必须为每个请求显式发送令牌或凭据。如果恶意站点伪造请求,则它无法将所需的身份验证信息发送到服务器(除非另一个漏洞暴露该信息),并且请求被拒绝。在这种情况下,CSRF不提供任何额外的保护。