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使用多线程不断刷新网页的方法
Mar 31 Python
python使用range函数计算一组数和的方法
May 07 Python
python安装教程 Pycharm安装详细教程
May 02 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
用python获取txt文件中关键字的数量
Dec 24 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下常用正则表达式整理
2010/10/26 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
npm scripts 使用指南详解
2018/10/08 Javascript
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
服装机修工岗位职责
2013/12/26 职场文书
工程招投标邀请书
2014/01/30 职场文书
五年级英语教学反思
2014/01/31 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
师范生求职自荐信
2014/06/14 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
工程项目合作意向书
2015/05/08 职场文书
幼儿园六一主持词
2015/06/30 职场文书
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
Golang日志包的使用
2022/04/20 Golang
cypress测试本地web应用
2022/06/01 Javascript
html中两种获取标签内的值的方法
2022/06/16 jQuery