python Djanjo csrf说明与配置
Django csrf
CSRF 全称(Cross Site Request Forgery)跨站请求伪造。也被称为One Click Attack和Session Riding,通常缩写为CSRF或XSRF。你可以这样理解:攻击者(黑客,钓鱼网站)盗用了你的身份,以你的 名义发送恶意请求,这些请求包括发送邮件、发送信息、盗用账号、购买商品、银行转账,从而使你的个人隐私泄露和财产损失。
CSRF原理
1、用户登录并信任网站A
2、验证通过,在用户处产生A的Cookie
3、用户在没有登出网站A的情况下,访问危险网站B
4、网站B要求访问第三站点网站A,发出一个request
5、根据网站B的请求,浏览器带着网站A产生的Cookie访问网站A
6、网站A不知道请求是用户发出的还是网站B发出的,由于浏览器会自动带上用户Cookie,所以网站A会根据用户的权限处理请求,这样网站B就达到了模拟用户操作的目的
从上面步骤中可以看出,要完成一次CSRF攻击,受害者必须依次完成以下两个步骤:
登录受信任网站A,并在本地生成Cookie
在不登出A的情况下,访问危险网站B
看到这里,你也许会问:如果我不满足以上两个条件中的一个,我就不会受到CSRF攻击。是的,确实如此,但是你不能保证以下情况不会发生
你不能保证你登录了一个网站之后,不再打开一个tab页面并访问其他的网站
你不能保证你关闭浏览器之后,你本地的Cookie会立刻过期,你上次的会话已经结束
上述中所谓的攻击网站,可能就是一个钓鱼网站
CSRF攻击实例
听了这么多,可能大家还云里雾里,光听概念可能大家对于CSRF还是不够了解,下面我将举一个例子来让大家对CSRF有一个更深层次的理解。
我们先假设支付宝存在CSRF漏洞,我的支付宝账号是wl,攻击者的支付宝账户是xxx,然后我们通过网页请求的方式 http://zhifubao.com/withdraw?account=lyq&amount=10000&for=wl 可以把账号的wl的10000元转到我的另外一个 账户wl上面去。通常这个情况下,该请求发送到支付宝服务器后,服务器会先验证请求是否来自一个合法的session,并且该session的用户已经成功登录。攻击者在支付宝也有账户xxx,他直到上文中的URL可以进行转账操作,于是他自己可以发送一个请求 http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx 到支付宝后台。但是这个请求是来自攻击者而不是我wl,所以不能通过安全认证,因此该请求作废。这时,攻击者xxx想到了用CSRF的方式,他自己做了个网站,在网站中放了如下代码:http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx ,并且通过网站链接诱使我来访问他的网站。当我禁不住诱惑时就会点了进去,上述请求就会从我自己的浏览器发送到支付宝,而且这个请求会附带我的浏览器中的cookie。大多数情况下,该请求会失败,因为支付宝要求我的认证信息,但是我如果刚访问支付宝不久,还没有关闭支付宝页面,我的浏览器中的cookie存有我的认证信息,这个请求就会得到响应,从我的账户中转10000元到xxx账户里,而我丝毫不知情。
进入settings.py找到 MIDDLEWARE 这个列表找到 'django.middleware.csrf.CsrfViewMiddleware', 这个字段

这一行设置csrf的如果把它注释掉csrf将失效

现在我在django写了一个HTML表单当我点击提交的时候会变为提交方式会变为POST然后就会发现报了一个 403 的csrf错误
这是因为django的防护功能 因没有提供Referer值而被误认为CSRF攻击,拒绝访问 怎么解决这个问题呢?

可以在form表单下面加上 {%csrf_token%} 当你检查的时候就会发现多了一个input数据 这是 {%csrf_token%} 自动转化的数据提供浏览器进行确认
如果成功就可以正常访问错误则拒绝访问

然后你就会发现跳转页面的时候访问成功了

python Djanjo csrf说明与配置的更多相关文章
- Python Virtualenv运行Django环境配置
系统: RHEL6.5 版本说明: Python-3.5.0 Django-1.10.4 virtualenv:为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各 ...
- Python虚拟环境的安装和配置-virtualenv与windows下多个python版本共存
Python虚拟环境的安装和配置-virtualenv与windows下多个python版本共存 windows下多个python版本共存 https://www.python.org/downloa ...
- Centos安装Python各版本解释器并配置pip
Centos7.3安装Python3.7 Python3.7貌似又多了新的依赖,所以按照安装之前的套路安装在配置pip阶段就会出问题,比如: ModuleNotFoundError: No modul ...
- odoo开发环境搭建(四):python开发工具IDE pycharm配置
odoo开发环境搭建(四):python开发工具IDE pycharm配置
- python批量给云主机配置安全组
python批量给云主机配置安全组 用公有云的思路去思考去实现一个安全稳定.可伸缩和经济的业务构架,云运维是有别与传统运维的,比如说了解公有云的都知道安全组的概念,安全组跟防火墙功能很相似,那我的机器 ...
- python + selenium WebDriver的环境配置
想试用python语言来学习selenium WebDriver,首先需要搭建一个测试环境,从python安装到浏览器插件配置的详细步骤,总结如下: 一.python环境配置 1.从官网下载最新的一个 ...
- 问题 |无法找到Python路径,需手动配置环境变量
问题: 在命令行cmd输入Python,如果出现以下无法识别命令行的报错,说明在系统环境变量中无法找到对应之前安装的Python的路径,则需手动配置一下 怎么配置? 1.打开我的电脑——右键——属性— ...
- Python安装与环境变量配置 入门详解 - 精简归纳
Python安装与环境变量配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 Python安装与环境变量配置 入门详解 - 精简归纳 一.下载Py ...
- 【python之路1】python安装与环境变量配置
直接搜索 Python,进入官网,找到下载,根据个人电脑操作系统下载相应的软件.小编的是windows os .下载python-2.7.9.msi 安装包 双击安装程序,进入安装步骤.在安装过程中 ...
随机推荐
- 软帝学院:一万字的Java基础知识总结大全(实用)
Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨 ...
- Xposed的新打开方式--Xpatch工作流程分析
1. Xpatch概述 Xpatch是一款利用重打包的方式,使得被处理的Apk启动时自动加载Xposed模块,来实现应用内Hook的工具. 项目地址:https://github.com/WindyS ...
- IT兄弟连 HTML5教程 CSS3属性特效 渐变2 线性渐变实例
3 线性渐变实例 一.颜色从顶部向底部渐变 制作从顶部到底部直线渐变有三种方法,第一种是起点参数不设置,因为起点参数的默认值为“top”:第二种方法起点参数设置为“top”:第三种起点参数使用“-90 ...
- 持续集成(CI):Jmeter+Ant+Jenkins定时构建
这里Jenkins的安装部署以及工程项目的整体配置不做赘述,其它博文已经说明,这里主要是赘述Ant的相关配置,build.xml文件配置以及项目中的部分配置 一.build.xml 在Ant的安装目录 ...
- Fiddler抓取内容自动保存本地
Fiddler抓取内容自动保存本地 一.点击FidderScript 二.选择你想要的获得内容的方法 OnBeforeRequest:发送请求后 OnBeforeResponse:获得响应 三.修改j ...
- 龙芯电脑上Electron应用开发
背景 最近在一台龙芯电脑(系统是中兴新支点,Linux)上开发electron应用. PS:龙芯是国产的cpu,采用是mips架构,类似x86.arm. 安装NodeJS 安装步骤请查看:https: ...
- 通过U盘在物理机安装CentOS出现Timeout的问题
错误信息:centos dracut timeout..... 解决方案: 在进入install页面是,按e,启动编辑.要保证Label与U盘的卷标保持一致即可.
- PostgreSQL中的onflict
PostgreSQL 9.5 引入了一项新功能,UPSERT(insert on conflict do),当插入遇到约束错误时,直接返回,或者改为执行UPDATE. 1.不存在则插入,存在则更新 i ...
- Python语法速查: 13. 操作系统服务
返回目录 本篇索引 (1)sys模块 (2)os模块 (3)与Windows相关模块 (4)subprocess模块 (5)signal模块 (1)sys模块 sys模块用于Python解释器及其环境 ...
- Ubuntu下配置IP地址
17.10版本之前: Ubuntu的网卡配置文件跟CentOS的不一样,Ubuntu的网卡配置文件是/etc/network/interfaces.我们用vi /etc/network/interfa ...