Django csrf

CSRF_TOKEN跨站请求伪造

CSRF或者XSRF:跨站请求伪造
	攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的

防范:CSRF攻击防范
	-Referer:上一次访问的地址(图片防盗链)
    	https://www.lagou.com/gongsi/
    -在请求地址中添加 token 并验证
    -在 HTTP 头中自定义属性并验证
    -把随机字符串放在请求体中

Django中处理csrf

//form表单
<form action="" method="post">
    {% csrf_token %}
    <p>给谁转:<input type="text" name="to_user" id="id_name"></p>
    <p>转多少:<input type="text" name="money" id="id_money"></p>
    <input type="submit" value="转账">
</form>


//ajax提交:两种方案
$.ajax({
		url: '/transfer/',
		method: 'post',

        //方法一
		data: {
				to_user: $('#id_name').val(), 
				money:$('#id_money').val(),
				csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()
				},

		//方法二
        data: {
				to_user: $('#id_name').val(), 
				money: $('#id_money').val(),
				csrfmiddlewaretoken:'{{csrf_token}}'},

        success: function (data) {console.log(data)}
        })

cookie的处理

<script src="/static/jquery.cookie.js"></script>

var token=$.cookie('csrftoken')

csrf放到请求头中

 $.ajax({
            url: '/',
            headers:{'X-CSRFToken':token},
            type: 'post',
            data: {
                	'name': $('[name="name"]').val(),
                	'password': $("#pwd").val(),
            },
            success: function (data) {
                console.log(data)
            }
        })

全局使用csrf,局部视图函数禁用csrf

1 在视图函数上加装饰器
from django.views.decorators.csrf import csrf_exempt,csrf_protect

# 不再检测,局部禁用(前提是全站使用)
@csrf_exempt
def csrf_token(request):
    
# 检测,局部使用(前提是全站禁用)
@csrf_protect
def csrf_token(request):
上一篇:csrf从小白到入门(简单易懂,有逻辑)


下一篇:Java 学习笔记(二十一)