第三百一十五节,Django框架,CSRF跨站请求伪造


第三百一十五节,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


"en">

    "UTF-8">
    Title
    "stylesheet" type="text/css" href="/static/css/tou.css">


'/bugarticles/' method="post"> {% csrf_token %} "text" name="nad"/> "submit" value="搜索"/>

第三百一十五节,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


"en">

    "UTF-8">
    Title
    "stylesheet" type="text/css" href="/static/css/tou.css">


'/bugarticles/' method="post"> {% csrf_token %} "text" name="nad"/> "submit" value="搜索"/>

 

Ajax提交



"en">
    "UTF-8">
    


    {% csrf_token %}
  
    "button" οnclick="Do();"  value="Do it"/>
  
    
    
    

 

 

 

  

转载于:https://www.cnblogs.com/adc8868/p/7206158.html

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