关于Spring Security移动端CSRF集成方案的疑问
关于Spring Security移动端CSRF方案的疑问解答
核心原因是浏览器的同源策略——恶意站点的前端脚本根本没法跨域请求你的GET /csrf接口,浏览器会直接拦截这类跨域AJAX请求,除非你主动配置CORS允许对方域名,正常生产环境没人会这么干。
再拆解下逻辑:
- CSRF攻击的本质是利用用户已登录状态下自动携带的Cookie,伪造用户发起请求,但恶意站点拿不到你的CSRF令牌:因为跨域脚本无法读取
GET /csrf的返回内容,自然没法在伪造的POST/PUT请求里带上正确的令牌。 - 你的合法客户端(比如同域名的前端页面、自家的原生APP)要么是同源的能正常获取令牌,要么是原生APP不受浏览器同源策略限制,但APP的存储是隔离的,恶意站点根本碰不到APP里存的令牌。
- 服务器端会验证请求里的CSRF令牌和当前Session绑定的令牌是否一致,恶意请求拿不到正确令牌,自然过不了验证。
内容的提问来源于stack exchange,提问作者charlycou
相关产品推荐
相关产品推荐

