- 第一章 介绍
- 第一节 概述
- 第二节 关键点
- 第三节 目标
- 第二章 实战:CSRF 场景复现
- 第一节 Web 应用
- 第二节 CSRF 攻击
- 第三节 场景建模
- 第四节 POST 方式
- 第五节 实战:与XSS 的结合添加后台账号
- 第三章 CSRF 的防御
- 第一节 无效的防御
- 第一节 使用秘密cookie
- 第二节 仅接受POST请求
- 第三节 多步交易
- 第四节 URL重写
- 第五节 HTTPS
- 第二节 有效防御
- 第一节 验证Referer 字段
- 第二节 添加Token 验证
- 第三节 二次验证
- 第四节 用户养成良好的习惯
跨站请求伪造(Cross-site request forgery,CSRF)是一种攻击,它强制终端用户在当前对其进行身份验证后的Web应用程序上执行非本意的操作。 CSRF攻击的着重点在伪造更改状态的请求,而不是盗取数据,因为攻击者无法查看对伪造请求的响应。 借助社工的一些帮助(例如通过电子邮件或聊天发送链接),攻击者可以诱骗用户执行攻击者选择的操作。
如果受害者是普通用户,则成功的CSRF攻击可以强制用户执行状态更改的请求,例如转移资金,更改其电子邮件地址等。
如果受害者是管理帐户,CSRF可能会危及整个Web应用程序。
第二节 关键点
CSRF是一种欺骗受害者提交恶意请求的攻击。它继承了受害者的身份和特权,代表受害者执行非本意、恶意的操作。 对于大多数站点,浏览器请求自动发送与站点关联的所有凭据,例如用户的会话cookie
,IP地址,Windows域凭据
等。 因此,如果用户当前已对该站点进行了身份验证,则该站点将无法区分受害者发送的伪造请求和受害者发送的合法请求。
CSRF攻击目标是能够更改服务器状态或数据的业务或功能
,例如更改受害者的电子邮件地址、密码或购买商品
。强制受害者查询数据,对于攻击者来说没什么用,因为无法获得服务器响应。
因此,CSRF攻击针对引起状态变化的请求。
有时可以将CSRF攻击存储在易受攻击的站点上。这些漏洞被称为“存储的CSRF漏洞
”。这可以通过简单地在接受HTML的字段中存储IMG或IFRAME标记,或通过更复杂的跨站点脚本攻击来实现。 如果攻击可以在站点中存储CSRF攻击,则攻击的严重性会被放大。特别是,受到攻击的可能性增加,因为受害者比互联网上的某个随机页面更有可能查看包含攻击的页面。
1. 我给你的
2. 你自己写的论坛,转账功能。
为了复现CSRF 攻击的场景,我们搭建了一个模拟银行网站。该模拟银行网站的核心业务就是转账。
正常的业务
第二节 CSRF 攻击
如何触发?
大爷!来玩
尝试查看通道一的源码。
也就是说,该页面通过
标签发送了一个get 请求,这个get 请求,正是用户发起转账业务的请求。
第三节 场景建模
CSRF 的类别 以上场景中是利用 标签发送的get 请求。那么是不是把关键操作使用POST 请求,就能够防御CSRF 漏洞了呢?答案是否定的。
第四节 POST 方式即使转账操作使用POST 方法,攻击者也可以通过构造表单的方式来伪造请求,核心代码如下。
document.csrf.submit()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?