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实现设置windows桌面壁纸代码分享
Mar 28 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
django中send_mail功能实现详解
Feb 06 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python计算列表内各元素的个数实例
Jun 29 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
Python如何使用函数做字典的值
Nov 30 Python
python安装和pycharm环境搭建设置方法
May 27 Python
解决Windows下python和pip命令无法使用的问题
Aug 31 Python
Python用access判断文件是否被占用的实例方法
Dec 17 Python
python使用smtplib模块发送邮件
Dec 17 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
js自定义回调函数
2015/12/13 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
浅析Python中的多条件排序实现
2016/06/07 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python实现Kmeans聚类算法
2020/06/10 Python
django 单表操作实例详解
2019/07/30 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
生产主管岗位职责
2013/11/10 职场文书
开水果连锁店创业计划书
2013/12/29 职场文书
课例研修方案
2014/05/31 职场文书
人民调解员培训方案
2014/06/05 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android