你真的会SpringBoot跨域吗?
Springboot跨域问题之XSS (Cross Site Scripting) 跨站脚本攻击
声明:本文为半科普文,不过多深入研究 欢迎讨论
刚接触前后端分离一定会碰到跨域问题
,那什么是跨域呢?
- 正常前后端交互
- 跨域问题
一般个人项目会选择的跨域解决方法:
添加WebCorsConfig
跨域类,实现WebMvcConfigurer
接口,同时加上@Configuration
注解
registry.addMapping("/**")
.allowedOrigins("*") //开放哪些ip、端口、域名的访问权限
.allowCredentials(true) //是否允许发送Cookie信息
.allowedMethods("GET","POST", "PUT", "DELETE") //开放哪些Http方法,允许跨域访问
.allowedHeaders("*") //允许HTTP请求中的携带哪些Header信息
.exposedHeaders("*"); //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
带来的问题
XSS攻击 ,通过恶意漏洞获取用户权限,进行特定操作。
XSS攻击
xss攻击
为什么会有XSS攻击?
简单的说,"*" 代表的权限太大了,你无法保证用户服务器是否被入侵、数据是否传输安全,这里前端服务器因为审查不严存在反射型XSS漏洞
后端初步解决
.allowedOrigins({"ip1:port","ip2:port"})// 1 设置域名使用
.allowedHeaders("特定信息特定header头")// 2 设置header头
总结
当然上述解决方法并不能完全解决问题,前端代码审查、后端请求参数过滤各种方法有兴趣大家可以一起讨论~
很多人觉得跨域是一个很傻的东西,其实它被创造出来的本身是一个安全机制 dog~
参考:
有志者、事竟成,破釜沉舟,百二秦关终属楚;. 苦心人、天不负,卧薪尝胆,三千越甲可吞吴。