首页 > 其他分享 >11.django-csrftoken

11.django-csrftoken

时间:2022-11-17 12:55:20浏览次数:50  
标签:11 请求 视图 django csrf exempt csrftoken

django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。而对于django中设置防跨站请求伪造功能有分为全局和局部。

CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,具有很大的危害性。具体来讲,可以这样理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

Django中默认中间件会有csrftoken的

django.middleware.csrf.CsrfViewMiddleware

1 原理

当用post提交数据的时候,django会去检查是否有一个csrf的随机字符串,如果没有就会报错,这也是之前我们一直将其注释的原因,错误如

 

 

 

2 基本使用

  • form表单
    在表单中直接添加{% csrf_token%},放在请求体中
    <form ...>
        {% csrf_token %}  
        <input type='hidden' value='xxxxxxxx' />
        <input ... />
        <input type='submit' />
    </form>
  • ajax方式
    放在请求头中,通过jquery发送
    $.ajax({
                url: '/csrf_test/',
                method: 'post',
                headers:{'X-CSRFToken':'token值'},  // 注意放到引号里面
                data:{}
    }


 3.免除csrftoken

  • 在视图函数上面加上装饰器
    from django.views.decorators.csrf import csrf_exempt,csrf_protect
    @csrf_exempt
    def 函数名(request):  # 加上装饰器后,这个视图函数,就没有csrf校验了
          pass

     

  • 在视图类上加上装饰器
    from django.utils.decorators import method_decorator
    @method_decorator(csrf_exempt,name='dispatch')
    class index(View):
        def get(self,request):
            return HttpResponse("GET")
        def post(self,request):
            return HttpResponse("POST")

     

标签:11,请求,视图,django,csrf,exempt,csrftoken
From: https://www.cnblogs.com/victor1234/p/16899120.html

相关文章

  • 9.django-中间件
    中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出中间件会在url到路由分发之前通过,在响应客户端之前会再......
  • 10.django-cookie&session
    我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!在Web开发中,使用session来完成会话跟踪,ses......
  • 11_Kafka高级_工作流程
    kafka的工作流程和文件存储机制:当生产者往一个不存在的主题发送数据的时候,也可以发送。自己会帮你创建主题,一个分区,一个副本。是server.properties文件里面配置的。这是默......
  • node-v18.11.0-x64.msi安装npm时卡在sill idealTree buildDeps
    造成上述问题的原因是因为node的默认安装环境在国外,因此我们只需要修改下镜像的地址即可npmconfigsetregistryhttps://registry.npm.taobao.org查看是否安装成功:......
  • openjdk11源码编译调试
    一源码二系统工具macOSBigSur11.5.2Xcode12.5.1openjdk11.0.11Make3.81autoconf(GNUAutoconf)2.71Appleclangversion12.0.5(clang-1205.0.22.11)c......
  • 2022.11.17
    上午打被\(QC\)打就只有T3似乎能用线段树暴力覆盖骗\(30pts\),然而它的值域是\(\left[1,10^9\right]\),需要动态开点。但是我没学过阿。于是就仿照平衡树插入新点......
  • 【2022-11-13】家庭力量
    20:00路虽迩,不行不至;事虽小,不为不成。                                        ......
  • 【2022-11-12】搞好关系
    20:00过去事已过去了,未来不必预思量。只今只道只今句,梅子熟时栀子香。                              ......
  • 【221117-4】已知:x平方+y平方=3,x-y=1.求:x立方+y立方?
    ......
  • 02.电商系统在双11大促活动下的架构体系(1)
              优选消息队列,死信队列                                    ......