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实现排序算法
Feb 14 Python
python批量提取word内信息
Aug 09 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
使用python3实现操作串口详解
Jan 01 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
PyQt5组件读取参数的实例
Jun 25 Python
python实现登录密码重置简易操作代码
Aug 14 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
PyTorch 对应点相乘、矩阵相乘实例
Dec 27 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
selenium+python实现基本自动化测试的示例代码
Jan 27 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设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
js 火狐下取本地路径实现思路
2013/04/02 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
python决策树之C4.5算法详解
2017/12/20 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
基于python实现删除指定文件类型
2020/07/21 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
学校门卫岗位职责
2014/03/16 职场文书
青涩记忆观后感
2015/06/18 职场文书
幼儿体育课教学反思
2016/02/16 职场文书
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android