ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

三种方式完成csrf校验

2022-06-12 09:35:02  阅读:155  来源: 互联网

标签:name val 校验 cookie csrf 三种 csrfmiddlewaretoken id delete


第一种 利用标签查找获取页面止的随机字符串

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

第二种 利用模版语法提供的快捷书写

"csrfmiddlewaretoken": '{{ csrf_token }}'

第三种 通用方式

新建.js文件,ctrl+c、v下列代码
function getCookie(name) {
    let cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        const cookies = document.cookie.split(';');
        for (let i = 0; i < cookies.length; i++) {
            const cookie = cookies[i].trim();
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}

const csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

$.ajaxSetup({
    beforeSend: function (xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader('X-CSRFToken', csrftoken);
        }
    }
});
<script>
    $('#d1').click(function () {
        $.ajax({
            url: '',
            type: 'post',
            {#data: {'username': $('#username').val(), 'password': $('#password').val()},#}
            data: {
                {#'username': $('.uname').val(),#}
                'username': $("[name='uuname']").val(),
                {#'password': $('.pwd').val(),#}
                'password': $("[name='ppwd']").val(),
                {#'delete_id': $(this).attr('delete_id'),#} // 获取自定义属性delete_id等于的值此处为"d"
                'delete_id': $("[delete_id='d']").val(), // 获取自定义属性delete_id等于d的value值
                // 第一种 利用标签查找获取页面止的随机字符串
                "csrfmiddlewaretoken": $("[name='csrfmiddlewaretoken']").val()
                // 第二种 利用模版语法提供的快捷书写
                "csrfmiddlewaretoken": '{{ csrf_token }}'
                // 第三种 通用方式

            },
            {#data: {'delete_id': tt.val()},#}
            {#data: {'username': 'jason', 'age': 20},#}
            success: function (args) {

            }
        })
    })
</script>

标签:name,val,校验,cookie,csrf,三种,csrfmiddlewaretoken,id,delete
来源: https://www.cnblogs.com/vPYer/p/16367389.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有