python Django里CSRF 对应策略详解


Posted in Python onAugust 05, 2019

CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的×××方式。

我的理解是,比如你访问过招商银行的网站并登陆之后,你的cookie信息暂时不会失效,

这时,hacker通过各种方式诱导你访问他给你提供的网站等链接,让你在同一浏览器访问

hacker给你的网站时,那么他给你提供的网站里面有直接有向招商银行提交转账信息的请求,这时,

这个转账请求会借用你刚刚登陆过招商银行的cookie信息,来使用的你的身份进行合法的转账。

那么为了减少这个情况的发生,在客户端与服务端交互的时候,当客户端浏览器第一次访问cookie的时候,服务端会有基于csrf的随机验证字符串生成,然后把这些字符串写到客户端cookie里,同时服务端在session里保存一份,当客户端浏览器再次发来post请求的时候,服务端会验证cookie里csrf_token(就是生成的这个随机字符串)。

Django里自动帮我们封装了这个功能,在Django项目里的setting.py文件里会默认开启 'django.middleware.csrf.CsrfViewMiddleware',这一项功能。

所以我们html文件里有post请求的时候要在from表单里添加{% csrf_token %}这一项

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div>
    <form action="/app01/login/" method="post">
 {% csrf_token %}
      <input type="text" name="username">
      <input type="password" name="pwd">
      <input type="submit" value="提交">
    </form>
  </div>
</body>
</html>

但是有的时候是不需要 csrf_token 认证的,有的时候是需要的,但是Django项目里的setting.py文件里设置了 'django.middleware.csrf.CsrfViewMiddleware'之后就是全局生效了;这就 不是我们所需要的了。

那么如果有的函数不需要csrf_token 认证的话,那么就需要用到@csrf_exempt装饰器来设置单个函数不用csrf_token 认证

from django.views.decorators.csrf import csrf_exempt,csrf_protect

@csrf_exempt是不需要设置csrf_token认证的

@csrf_protect是 需要设置csrf_token 认证的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python三元运算实现方法
Jan 12 Python
python中的decorator的作用详解
Jul 26 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
python Cartopy的基础使用详解
Nov 01 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 #Python
详解Python打包分发工具setuptools
Aug 05 #Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 #Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 #Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 #Python
Django应用程序入口WSGIHandler源码解析
Aug 05 #Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 #Python
You might like
PHP 快速排序算法详解
2014/11/10 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
Python语言快速上手学习方法
2018/12/14 Python
Python安装selenium包详细过程
2019/07/23 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python 远程开关机的方法
2020/11/18 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
几个数据库方面的面试题
2016/07/01 面试题
医学专业大学生求职的自我评价
2013/11/27 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
走群众路线剖析材料
2014/10/09 职场文书
大四学生个人总结
2015/02/15 职场文书
小学中队活动总结
2015/05/11 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书