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访问MySQL封装的常用类实例
Nov 11 Python
python编写暴力破解FTP密码小工具
Nov 19 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
python调用外部程序的实操步骤
Mar 04 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 Python
Python下载的11种姿势(小结)
Nov 18 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
Python 图片添加美颜效果
Apr 28 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
基于mysql的论坛(6)
2006/10/09 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
php curl 上传文件代码实例
2015/04/27 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
将python代码和注释分离的方法
2018/04/21 Python
Django的性能优化实现解析
2019/07/30 Python
如何使用Python调整图像大小
2020/09/26 Python
谈谈python垃圾回收机制
2020/09/27 Python
python实现ping命令小程序
2020/12/28 Python
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
历史学专业推荐信
2013/11/06 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
法律进企业活动方案
2014/03/04 职场文书
仓库文员岗位职责
2014/04/06 职场文书
热血教师观后感
2015/06/10 职场文书
遗失证明范文
2015/06/19 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
Java8中接口的新特性使用指南
2021/11/01 Java/Android
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis