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服务中新建进程的方法
Jun 30 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python中使用支持向量机SVM实践
Dec 27 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
一百多行python代码实现抢票助手
Sep 25 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
Django stark组件使用及原理详解
Aug 22 Python
python sorted方法和列表使用解析
Nov 18 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
python中的 zip函数详解及用法举例
Feb 16 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移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
Javascript中神奇的this
2016/01/20 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
python实现哈希表
2014/02/07 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
python使用knn实现特征向量分类
2018/12/26 Python
Python 支付整合开发包的实现
2019/01/23 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
思想品德自我鉴定
2013/10/12 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
普通党员对照检查材料
2014/09/24 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis