CSRF

  a.CSRF原理
    post提交时需要提交csrf_token ,缺少则不通过

在form表单中加入:
{% csrf_token %}

  b.无CSRF时存在隐患
    防护其他人通过别的链接post提交
  c.Form提交(CSRF)
      {% csrf_token %}

  d.Ajax提交(CSRF) ----L22-capture-10

                         CSRF请求头:X-CSRFtoken
在所有ajax请求加入请求头
               $(function(){
$.ajanxSetup({
beforeSend:function(xhr,settings){
                             
#xhr:XMLHttpRequst()  ajax封装的xhr方法
xhr.setRequestHeader('X-CSRFtoken',$.cookie('csrftoken'))
} })
$('#btn1').click(function(){
$.ajax({
url:'/login/',
type:'POST'
data:{‘user’:123}
success:function(arg){
...
}
})
})
              })

  

  局部加上CSRF:

    @csrf_exempt 单一的排除
    @csrf_protect 单一的加上

中间件(管道,httphandle类)

    1.原理

  settings中的MIDDLEWARE
      对所有请求做统一的处理

    2.操作

    

from django.utils.deprecation import MiddlewareMixin

class Row1(MiddlewareMixin):
     #请求开始
def process_request(self,request):
print('row1')
       if True:
          pass
       else:
         return HttpResponse     #url(r'^test/(?p<nid>\d+)$',views.test)
    #获取路由系统中的参数,和test函数
def process_view(self,request,view_func,view_func_args,view_func_kwargs):
        print('row1_view')      #请求返回
     def process_response(self,request,response):        return response
   
def process_exception(self,request,exception): #views 中出错就执行
if isinstance(exception,ValueError):
return HttpResponse('valueError')      def process_template_response(self,request,response):
#如果views中的函数返回的对象中,具有render方法
print('------')
return response

  

  

Django之中间件-CSRF的更多相关文章

  1. $Django 中间件 csrf

     中间件  -中间件是什么?请求和响应之间的一道屏障  -中间件作用:控制请求和响应  -django中内置几个中间件   process_request(self,request)   proces ...

  2. csrf 跨站请求伪造相关以及django的中间件

    django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware来完成. 1.django中常用的中间件? - proces ...

  3. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)

    一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...

  4. django学习之- CSRF及中间件

    CSRF # 表示django全局发送post请求均需要字符串验证功能:防止跨站请求伪造的功能工作原理:客户端访问服务器端,在服务器端正常返回给客户端数据的时候,而外返回给客户端一段字符串,等到客户端 ...

  5. 【Django】中间件,csrf,缓存,信号

    中间件(middleware) 描述:Middlewares 是修改 Django request 或者 response 对象的钩子. 在django中,中间件其实就是一个类,在请求到来和结束后,d ...

  6. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  7. Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

    目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax c ...

  8. django中间件 csrf auth认证

    django中间件 能做全局访问频率限制,身份校验,黑名单,白名单 用法: 新建一个文件夹,文件夹新建一个py文件,文件中写如下代码 注意点:你写的类必须继续MiddlewareMixin from ...

  9. Django:之中间件、微信接口和单元测试

    Django中间件 我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下: 也就是说,每一个请求都是先通过中间件中的 pr ...

随机推荐

  1. 前端知识点总结——CSS

    1.CSS的概述 1.什么是CSS? CSS:Cascading Style Sheets层叠样式表,级联样式表(简称:样式表) 2.作用 设置HTML网页元素的样式 3.HTML与CSS的关系 HT ...

  2. android基本控件学习-----TextView

    一.TextView的讲解 <实例一> <?xml version="1.0" encoding="utf-8"?> <Linea ...

  3. js 验证数字的正则表达式集

    <script type="text/javascript">     function validate(){       var reg = new RegExp( ...

  4. function in Postgres

    CREATE or REPLACE FUNCTION fn_attr_category() RETURNS void AS $BODY$ declare v_tmp_rec record; begin ...

  5. python笔记7:优雅的python

    7. 如何让python代码更 Pythonic : 1.变量交换: a, b = b, a 2.带有索引位置的集合遍历: colors = ['red', 'green', 'blue', 'yel ...

  6. ansible 2.7.1 快速开始

    refer to 官方手册 https://docs.ansible.com/ansible/latest/modules/modules_by_category.html refer to 中文手册 ...

  7. 聚类kmeans算法在yolov3中的应用

    yolov3 kmeans yolov3在做boundingbox预测的时候,用到了anchor boxes.这个anchors的含义即最有可能的object的width,height.事先通过聚类得 ...

  8. mfoc安装编译

    系统环境 UBUNTU16.04,要安装好各种基础的编译环境,这就不说了,如果不知道需要什么,那就编译时出错时看到什么安装什么吧 下载源码包libnfc, mfoc, mfcuk,都是github上, ...

  9. java加载类的方法1.classloader 2.class.forName()

    java加载类的方法1.classloader 2.class.forName() 加载一个类后,是在方法去创建这个类的元信息class对象,在方法区立刻创建.在方法区创建.

  10. Define Custom Data Filter Using Pre-Query Trigger In Oracle Forms

    Oracle Forms is having its default records filter, which we can use through Enter Query mode to spec ...