CSRF 1 (转)
一.CSRF是什么?
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
二.CSRF可以做什么?
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
三.CSRF的原理
要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。
示例1:
银行网站A,它以GET请求来完成银行转账的操作,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000
危险网站B,它里面有一段HTML的代码如下:<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
首先,你登录了银行网站A,然后访问危险网站B,噢,这时你会发现你的银行账户少了1000块......为什么会这样呢?原因是银行网站A违反了HTTP规范,使用GET请求更新资源。
示例2:
为了杜绝上面的问题,银行决定改用POST请求完成转账操作。
银行网站A的WEB表单如下:
<form action="Transfer.php" method="POST">
<p>ToBankId: <input type="text" name="toBankId" /></p>
<p>Money: <input type="text" name="money" /></p>
<p><input type="submit" value="Transfer" /></p>
</form>
后台处理页面Transfer.php如下:
<?php
session_start();
if (isset($_REQUEST['toBankId'] && isset($_REQUEST['money']))
{
buy_stocks($_REQUEST['toBankId'], $_REQUEST['money']);
}
?>
危险网站B,仍然只是包含那句HTML代码:
<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
,你首先登录了银行网站A,然后访问危险网站B,结果.....和示例1一样,你再次没了1000块~T_T,事故的原因是:银行后台使用了$_REQUEST去获取请求的数据,而$_REQUEST既可以获取GET请求的数据,也可以获取POST请求的数据,这就造成了在后台处理程序无法区分这到底是GET请求的数据还是POST请求的数据。在PHP中,可以使用$_GET和$_POST分别获取GET请求和POST请求的数据。在JAVA中,用于获取请求数据request一样存在不能区分GET请求数据和POST数据的问题。;
示例3:
经过前面2个惨痛的教训,银行决定把获取请求数据的方法也改了,改用$_POST,只获取POST请求的数据,后台处理页面Transfer.php代码如下:
<?php
session_start();
if (isset($_POST['toBankId'] && isset($_POST['money']))
{
buy_stocks($_POST['toBankId'], $_POST['money']);
}
?>
转载于:https://www.cnblogs.com/lhq8998/p/7295435.html
CSRF 1 (转)相关推荐
- 初窥CSRF攻击方式以及Flask-WTF
含义 CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF. ...
- 解决POST数据时因启用Csrf出现的400错误
第一种解决办法是关闭Csrf public function init(){ $this->enableCsrfValidation = false; } 第二种解决办法是在form表单中加入隐 ...
- Asp.net MVC 3 防止 Cross-Site Request Forgery (CSRF)原理及扩展 安全 注入
原理:http://blog.csdn.net/cpytiger/article/details/8781457 原文地址:http://www.cnblogs.com/wintersun/archi ...
- 不同版本浏览器前端标准兼容性对照表以及CORS解决跨域和CSRF安全问题解决方案
CORS也已经成为主流的跨域解决方案,不过CORF也会引发CSRF,本文先分享第三方的一个前端工具箱全面展示那些浏览器版本支持CORS,由于各家浏览器厂商因为各自原因在不同的版本里支持的标准不同,这个 ...
- Spring security防止跨站请求伪造(CSRF防护)
因为使用了spring security 安全性框架 所以spring security 会自动拦截站点所有状态变化的请求(非GET,HEAD,OPTIONS和TRACE的请求),防止跨站请求伪造(C ...
- 所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护
1.表单方法伪造 有时候,我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式,而 HTML 表单仅支持 GET 和 POST 两种方式,如果要使用其他的方式,则需要自己来定义实现. HTTP ...
- Django web : CSRF verification failed. Request aborted.
错误标题:CSRF verification failed. Request aborted. 错误描述: HelpReason given for failure:CSRF cookie not s ...
- 手绘10张图,把CSRF跨域攻击、JWT跨域认证说得明明白白的
作者 | 写代码的明哥 来源 | Python编程时光 这篇文章本应该是属于 HTTP 里的一部分内容,但是我看内容也挺多的,就单独划分一篇文章来讲下. 什么是跨域请求 要明白什么叫跨域请求,首先得知 ...
- Django模板之jinja2模板和CSRF
二.Django使用jinja2模板 2.1 jinja2介绍 Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎 ...
- 说说CSRF的***
说说CSRF 对CSRF来说,本来Spring3.1.ASP.NET MVC3.Rails.Django等都现已撑持主动在触及POST的当地增加Token(包含FORM表单和AJAX POST等),似 ...
最新文章
- python官网 中文版 新闻-小伙Python爬虫并自制新闻网站,太好玩了
- 0 开场白元素项类的设计
- pgsql数据库默认配置事务类型_postgreSql最佳配置详解(connection 申请、回收策略)...
- debugging Auto Layout:Logical Errors
- [原创]网银在线chinabank安全漏洞之“不完善的开发软件包”
- 关于管理的十个经典故事
- Mybatis-学习笔记(N)mybatis-generator 生成DAO、Mapper、entity
- vb.net程序可以在触摸屏上运行么_简单PLC编程台达PLC模拟量程序
- 中国34个省级行政区2000年-2021年逐月NDVI统计分析结果
- trados 有道api_小白教程(四) | 你和专业翻译还差一个Trados
- DataStore详解
- 用Python自制一个百度一下,这操作可还行
- Innoreader + Rsshub
- 程序员的终极幻想(三):做一只小小的蜗牛
- node-webkit:开发桌面+WEB混合型应用的神器
- Spatial Pyramid Pooling
- 计算机考研408真题(全国统考2009--2020)、985高校计算机考研资料(清北+北理+北邮+武大+华科+浙大+复旦+哈工大+西安交大+华南理工)、王道四件套、天勤四件套---百度网盘免费下载
- 3、可燃气体的爆炸极限
- 好消息,Vue3官方文档出中文版的啦!
- 开源深度学习加速器(NPU)NVDLA介绍
热门文章
- GDCM:gdcm::PersonName的测试程序
- Boost:bimap双图operator bracket的测试程序
- ITK:二进制XOR两个图像
- ITK:计算网格的法线
- VTK:Filtering之ContoursFromPolyData
- C语言反转二叉树的递归和迭代解决方案(附完整源码)
- C++使用链表实现stack堆栈(附完整源码)
- 计算机学院的行话,只有你和你同学知道的“专业行话”
- B05_NumPy从数值范围创建数组(numpy.arange,numpy.linspace,numpy.logspace)
- phoenix数据类型,语法,方法