十三 Django框架,CSRF跨站请求伪造

 全局CSRF

如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF

复制代码
#中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',   #开启csrf
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
复制代码

注意:一旦开启了csrf提交表单时会出现403错误,必须结合两个步骤来使用

第一、页面响应返回必须由render()方法

第二、必须在html页面的

标签里用上模板语言{% csrf_token %}


{% csrf_token %}
...

 

逻辑处理

复制代码
from django.shortcuts import render,redirect

from app1.chajian.fen_ye import fen_ye_lei  #导入分页模块
from app1.models import *   #导入数据库模块
#逻辑处理模块
def special(request):

    return render(request, 'app1/index.html',locals())
复制代码

html

复制代码



    
    Title
    


{% csrf_token %}
复制代码

十三 Django框架,CSRF跨站请求伪造_第1张图片

 

 

局部CSRF

局部CSRF,可以用装饰器在逻辑处理函数上做装饰

需要导入模块:from django.views.decorators.csrf import csrf_exempt,csrf_protect

@csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。使用了同样遵守上面两个步骤
@csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。

 逻辑处理

复制代码
from django.shortcuts import render,redirect
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from app1.chajian.fen_ye import fen_ye_lei  #导入分页模块
from app1.models import *   #导入数据库模块

#逻辑处理模块
@csrf_protect
def special(request):

    return render(request, 'app1/index.html',locals())
复制代码

html

复制代码



    
    Title
    


{% csrf_token %}
复制代码

 

Ajax提交

复制代码



    
    


    {% csrf_token %}
  
    
  
    
    
    

复制代码

 

转载于:https://www.cnblogs.com/meng-wei-zhi/p/8183130.html

你可能感兴趣的:(python,javascript,数据库,ViewUI)