Spring security CSRF 跨域访问限制问题
在我们写 Spring 安全的时候通常有这么一句话:
httpSecurity.CSRF().disable().
从这句话的字面意思就很明白就是禁用 csrf , 什么是 csrf , 为什么要禁用可能就一脸懵逼了 。
因为你很有可能会遇到一个错误:
HTTP Status 403-Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
这个就是做 Web 开发的时候非常头痛的跨域访问问题 。
Spring Security 后 , 引入了CSRF , 默认是开启 。 不得不说 , CSRF和RESTful技术有冲突 。 CSRF默认支持的方法: GET|HEAD|TRACE|OPTIONS , 不支持POST 。
什么是 CSRF, 这是一个 WEB 应用安全的问题 , CSRF(Cross-site request forgery 跨站请求伪造 , 也被称为“One Click Attack” 或者Session Riding , 攻击方通过伪造用户请求访问受信任站点 。
其实跨域攻击操作过程比较简单 , 就是如果你不采取任何限制的时候 , 对 POST 相对风险系数比较高的访问 , 用户可以伪造请求 , 然后对服务器进行攻击和修改 。
比如说通过 伪造 POST 请求 , 然后能够将用户的数据删除 。
在跨域 (同一个 IP、同一个网络协议、同一个端口 , 三者都满足就是同一个域 , 否则就有跨域问题) 。 为什么在基于网页开发的时候没有这个跨域的问题 , 但是基于 RETS 开发的时候就非常明显 。
这是因为在网页开发的时候 , 首先服务器会返回 sessionid 到客户端的界面 , 在客户端向服务器请求的时候 , 都会带有这个 session id 。
但 在 RESTFul 开发的时候 , 这个情况就没有办法避免 , 因为我们的 API 会暴露给不同的用户 , 用户可能也会使用不同的 IP 地址 , 尤其用户可能还部署了多个服务器的情况下 。
因此 , 我们在 Spring 安全配置下 , 需要禁用 CSRF 。
禁用方法有你需要在 , 程序 http 过滤器上禁用 。
文章插图
【Spring security CSRF 跨域访问限制问题】这个就是你在上面看到的那个代码 。
- spring|什么牌子的蓝牙耳机听歌好? 实惠好用蓝牙耳机品牌
- spring|创业者须知的商界潜定律:只要我的人脉还在,白手起家就不难
- spring|我的世界:Mojang迁移又爆问题!账号被盗、购买的JAVA版mc消失?
- spring|油管博主将90年代的芭比娃娃电脑改装成当下主流的游戏台式机
- spring|卢伟冰:高端机全面OLED化的今天,大家怎么看待LCD屏的需求?
- s海外创投丨API安全公司「Salt Security」完成1.4亿美元D轮融资,CapitalG领投
- spring|三星S22 Ultra首发:这才是让人心甘情愿购买的万元机皇!
- spring|久违的高性能平板电脑精选,一文为你解惑所有
- spring|vivoNEX5有盼头,天玑9000帮忙!18+1TB并不贵
- spring|还是没忍住!红米K50电竞版突然官宣,外观、硬件、价格都很清晰