CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击方式,攻击者诱导已登录受信任网站的用户,在不知情的情况下发送恶意请求,从而在用户已认证的情况下执行非本意的操作。
原理
攻击者通过构造与受害网站相同的请求,诱导用户点击链接或访问页面,利用用户已登录的身份在后台发起请求,达到攻击目的。
错误编码示例
如下是易受 CSRF 攻击的 Kotlin 后端代码示例:
// 未做任何 CSRF 防护的 Spring Controller
@RestController
class TransferController {
@PostMapping("/transfer")
fun transfer(
@RequestParam to: String,
@RequestParam amount: Int
): String {
// 直接处理转账请求,未校验 CSRF Token
// 实际业务逻辑略
return "转账成功"
}
}
大约 1 分钟