django 笔记13 CSRF

CSRF
a.  CSRF原理

b.  无CSRF时存在隐患
c.  Form提交(CSRF)
d.  Ajax提交(CSRF)
    CSRF请求头 x-CSRFToken

    HTTP_X_CSRFToken django自动加的HTTP

中间件 django.middleware.csrf.CsrfViewMiddleware

局部:
    @csrf_protect 需要csrf认证  不需要在setting里添加django.middleware.csrf.CsrfViewMiddleware
    @csrf_exempt  不需要csrf认证

全局设置 局部设置  django.middleware.csrf.CsrfViewMiddleware
在views.py里
from django.views.decorators.csrf import csrf_exempt, csrf_protect

@csrf_exempt
def index(request):
    pass


在form表单下面添加
{% csrf_token %}

如果是以ajax提交方式
        $(function(){
            $.ajaxSetup({
            #GET HEAD OPTIONS TRACE 四种是不需要加csrftoken的 在这前需要做个判断
                beforeSend: function(xhr,settings){
                    xhr.setRequestHeader('X-CSRFtoken', $.cookie('csrftoken'));
                }
            });

            $('#btn').click(function () {
                $.ajax({
                    url: '/login/',
                    type:"GET",
                    data: {'user': 'root', 'pwd': '123'},
                    // headers: {'X-CSRFtoken': $.cookie('csrftoken')},
                    success:function(arg){

                    }
                })
            });
        })

猜你喜欢

转载自www.cnblogs.com/Liang-jc/p/9220551.html
今日推荐