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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
Python中random模块用法实例分析
May 19 Python
python开发简易版在线音乐播放器
Mar 03 Python
对pandas replace函数的使用方法小结
May 18 Python
matplotlib给子图添加图例的方法
Aug 03 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
python实现图像拼接
Mar 05 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
一文搞懂python异常处理、模块与包
Jun 26 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目录操作实例代码
2014/02/21 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
python如何实现视频转代码视频
2019/06/17 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
城建学院毕业生自荐信
2014/01/31 职场文书
党员公开承诺事项
2014/03/25 职场文书
反腐倡廉标语
2014/06/24 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
寒山寺导游词
2015/02/03 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
聘任书格式及范文
2015/09/21 职场文书
干部理论学习心得体会
2016/01/21 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
一行Python命令实现批量加水印
2022/04/07 Python