CORS跨域资源共享漏洞和 jsonp劫持漏洞
同源策略
浏览器的一个安全策略
域名,端口,协议相同才算同源
不同源的不能相互获取cookie,document,不能相互发ajax请求
但这给开发造成了不便,所以就有了跨域问题,CORS和jsonp是解决跨域问题的一种方案,
如果配置的不规范,可能会造成CORS跨域资源共享漏洞和jsonp劫持漏洞
java不合法的设置(“Access-Control-Allow-Origin”,"*",允许任何域访问)
jsonp跨域设置
response.setHeader(“Access-Control-Allow-Origin”,"*");
callback
CORS跨域漏洞CORS跨域设置
response.setHeader(“Access-Control-Allow-Origin”,"*");
response.setHeader(“Access-Control-Allow-Credentials”,“true”);
CORS跨域资源共享漏洞
CORS,跨域资源共享(Cross-origin resource sharing),是H5提供的一种机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。(解决跨域问题的一种方案)
漏洞原理
当浏览器发现服务器的请求为简单请求时,会在头信息里加入Origin字段。Origin字段代表此次请求来自哪个域,服务器就可以检验是否来自该域。如果匹配,服务器就会在响应里增添三个字段:
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Expose-Headers
其中 Access-Control-Allow-Origin是必须有的,而剩下两个可有可无。Access-Control-Allow-Origin字段代表允许哪个域访问。当字段值为‘*’时,就代表任意域都可以访问,这样,就导致了Cors漏洞的产生。
具体攻击流程
假设用户登录一个含有CORS漏洞的网站http://vnlu.com,同时又访问了攻击者提供的一个链接http://evil.com,
恶意网站会向又cros漏洞的网站发起请求获取敏感数据,比如用户的身份信息
(相当于没有同源策略的csrf)
参考链接
https://zhuanlan.zhihu.com/p/410621052
https://blog.csdn.net/Askshhbs/article/details/124426525
1.不要将Access-Control-Allow-Origin字段设置为*
2.严格校验Origin字段的值
3.HTTPS 网站不要信任HTTP 域
4.不要信任全部自身子域,减少攻击面
jsonp劫持漏洞
JSONP( JSON with Padding)是json的一种“使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
JSONP劫持就是利用scirpt标签的src属性实现跨域请求,获取网站数据的过程
攻击流程
目标:获取victim在网站B的敏感信息,比如id,name,email等信息。
前提条件:注册并登录+无安全检查
victim在网站B注册并登录
网站B对来自网站A的JSONP请求没有进行安全检查就直接返回数据
参考链接
https://blog.csdn.net/weixin_41603028/article/details/119990437
本文来自博客园,作者:lzstar-A2,转载请注明原文链接:https://www.cnblogs.com/lzstar/p/15399235.html
作 者:lzstar-A2
出 处:https://www.cnblogs.com/lzstar/
关于作者:一名java转安全的在校大学生
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注安全学习交流群菜鸟联盟(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯可乐以资鼓励,您的肯定将是我最大的动力。thx.
菜鸟联盟(IThonest),一个可能会有故事的qq群,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!