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 分钟