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常用正则表达式符号浅析
Aug 13 Python
使用Python的内建模块collections的教程
Apr 28 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
Python3模拟登录操作实例分析
Mar 12 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
python3字符串输出常见面试题总结
Dec 01 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 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
Zerg基本策略
2020/03/14 星际争霸
oracle资料库函式库
2006/10/09 PHP
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
基于vue中的scoped坑点解说
2020/09/04 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python中管道用法入门实例
2015/06/04 Python
python基础练习之几个简单的游戏
2017/11/10 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
python 生成图形验证码的方法示例
2018/11/11 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
《新型玻璃》教学反思
2014/04/13 职场文书
音乐教师求职信
2014/06/28 职场文书
英语系本科生求职信
2014/07/15 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
 Python 中 logging 模块使用详情
2022/03/03 Python