实现 CSRF 攻击简单示例
CSRF 简例
CSRF与 XSS 攻击经常在公司安全检查中出现,部分项目组也会来找我询问如何解决。网上关于其概念的介绍很多,但终感觉纸上得来终觉浅,决定写一个简单的例子来运行一下来了解其攻击方式,来更深刻理解其原理。关于其概念,这篇英文文章 维基百科 CSRF 有比较全面介绍,中文的访问不到,在这里不再赘述其内容,下面我们以一个简单的例子来实战一下 CSRF 攻击。
一个银行扣款的例子
假设一家银行提供了三种功能:1 查看当前额度,2 扣款。伪银行攻击其扣款功能。为代码逻辑简单只使用扣款,现实场景为转账。当用户登陆银行网站后,打开伪银行页面,在伪银行触发请求,导致银行扣款。下面实现只是能实现攻击,但攻击方案可能看起来并不完善,我想这并不影响阐述攻击方案的实现。当然这也不是骇客教学课程,能够阐述攻击方式足以。
构建项目所涉及技术
- spring boot
- spring security
构建银行项目
- 初始化一个 spring boot 2 项目,项目名为 csrf-bank
- 添加主要依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 安全配置,并配置用户密码为u/p,spring security 默认开启 CSRF,先关闭
/**
* 项目访问控制
* @author seal
*/
@Configuration
public class WebScurityConfig extends WebSecurityCo