首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在视图获取方法上使用@csrf_protect

在视图获取方法上使用@csrf_protect
EN

Stack Overflow用户
提问于 2013-04-02 01:01:03
回答 2查看 3.3K关注 0票数 1

我的大部分GET请求都是由角触发的,这使得在标头中设置CSRF令牌变得很容易。这已经为POST请求提供了现成的服务,但是我想知道我是否也可以对GET请求使用CSRF保护。

我最初的直觉是在视图的get方法之前添加@csrf_protect,例如:

代码语言:javascript
运行
复制
class ProjectView(View):
    @csrf_protect
    def get(self, request, *args, **kwargs):
        ...

但是,这会产生错误:

代码语言:javascript
运行
复制
AttributeError at /project
'ProjectView' object has no attribute 'COOKIES'

File "c:\Apps\msysgit\simpletask\lib\site-packages\django\middleware\csrf.py" in process_view
  95.                 request.COOKIES[settings.CSRF_COOKIE_NAME])

因此,我猜想POST请求提供了一些GET请求没有提供的东西。有更好的方法吗?

另外,在有人提到所有敏感信息都应该通过POST请求(最近我见过几次)之前,我尝试坚持GET的原因是我试图按照RESTful准则构建,这意味着GET请求是用于提取数据,POST用于新记录,PUT用于更新,DELETE用于数据删除。

编辑

由于似乎有一种情绪,我不应该尝试上述,虽然我现在有点同意,我试图防止的利用在以下三个链接中讨论:

  • http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx
  • http://haacked.com/archive/2009/06/24/json-hijacking.aspx
  • http://balpha.de/2013/02/plain-text-considered-harmful-a-cross-domain-exploit/
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-02 04:23:07

我觉得你不太明白CSRF到底保护了什么。CSRF利用站点在用户浏览器中的信任;利用会话cookie允许攻击者代表用户运行命令。

站点信任请求,因为它还没有过期浏览器的会话cookie。这就是为什么在大多数CSRF缓解技术中,为每个具有副作用的请求生成一个独特的OTP。攻击者不知道为OTP生成的密钥,因此无法伪造合法请求。

对于所有有副作用的URL(如POST、PUT、DELETE),您都需要CSRF。对于GET,它没有任何意义,因为GET请求--如果您正确地执行REST ----应该是幂等的--如果多次运行,它们返回相同的结果,并且不会产生任何副作用。

CSRF保护不能防止中间攻击中的信息泄露或人为攻击。因此,如果您有要保护的敏感信息,请使用HTTPS。若要防止不受管制地使用API,请使用身份验证和授权。

票数 7
EN

Stack Overflow用户

发布于 2013-04-02 04:07:19

您需要使用method_decorator

https://docs.djangoproject.com/en/1.4/topics/class-based-views/#decorating-the-class

所以你的代码

代码语言:javascript
运行
复制
class ProjectView(View):`
    @method_decorator(csrf_protect)
    def get(self, request, *args, **kwargs):

然而,编辑只检查POST请求(它有‘`if request.method ==’帖子‘),所以您必须自己实现一些东西。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15754424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档