zoukankan      html  css  js  c++  java
  • django中csrftoken跨站请求伪造的几种方式

    1.介绍

    我们之前从前端给后端发送数据的时候,一直都是把setting中中间件里的的csrftoken这条给注释掉,其实这个主要起了一个对保护作用,以免恶意性数据的攻击。但是这样直接注释掉并不是理智型的选择,这里我们介绍以下几种方式来解决这个问题。

    csrf原理:先发送get请求,在用户浏览器上藏一段随机字符串,发送post请求时,浏览器自动携带该字符串来进行识别

    2.方式一

    在前端中添加{% csrf_token %},前端ajax发送的data数据中加上:

    csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()
    

    3.方式二

    在ajax中添加X-CSRFToken的请求头,必须从cookie中取csrftoken的值

     $('#login').click(function () {
            $.ajax(
                {
                    url:{% url 'login' %},
                    type: 'post',
                    headers:{ "X-CSRFToken":$.cookie('csrftoken') },
                    data: {
                        user: $('[name="user"]').val(),
                        pwd: $('[name="pwd"]').val()
                    },
                    success: function (data) {
                        data = JSON.parse(data);
                        if (data.status) {
                            window.location = data.url
                        }
                        else {
                            alert('登陆错误')
                        }
                    }
                }
            )
        })
    

    4.方式三
    使用$.ajaxSetup()给全局的ajax添加默认参数

    $.ajaxSetup({
            headers: {"X-CSRFToken": $.cookie('csrftoken')},
        });
    

    PS:遇到问题没人解答?需要Python学习资料?可以加点击下方链接自行获取
    note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

    5.方式四
    在需要设置cookie的视图上加装饰器 ensure_csrf_cookie()

    from django.views.decorators.csrf import ensure_csrf_cookie
    
    @ensure_csrf_cookie
    def server(request):
    
        return render(request, 'server.html')
    
  • 相关阅读:
    解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
    React中使用Ant Table组件
    Maven在Eclipse中的实用小技巧
    knockout+echarts实现图表展示
    深入分析Spring 与 Spring MVC容器
    二维码登录原理及生成与解析
    Maven中安装本地Jar包到仓库中或将本地jar包上传
    sorl6.0+jetty+mysql搭建solr服务
    git revert和reset区别
    java注意的一些细节问题
  • 原文地址:https://www.cnblogs.com/python960410445/p/11963981.html
Copyright © 2011-2022 走看看