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 ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
Python实现的归并排序算法示例
Nov 21 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
python路径的写法及目录的获取方式
Dec 26 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
python保存图片的四个常用方法
Feb 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
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
bootstrap table小案例
2016/10/21 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
优秀毕业生求职信
2014/06/05 职场文书
违反交通法规检讨书
2014/09/10 职场文书
介绍信怎么写
2015/05/05 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android