带你深入理解Redis分布式锁
为了修复这个漏洞,只要通过在浏览器进程中对postMessage IPC的源进行相应的验证即可。 利用被入侵的渲染器欺骗地址栏 遗憾的是,我通过spoof.js只在postMessage中找到了一个漏洞。之后,我开始思考是否能够通过其他地方中的漏洞来绕过站点隔离,以确定代码审查与测试的目标。所以,我决定研究一下导航机制。 如果您稍微研究一下Chromium的导航机制,就会发现一个有趣的步骤:渲染器进程在提交导航时会向浏览器进程发送一个IPC消息。这个IPC消息非常耐人寻味,因为渲染器进程可以在导航启动后(即网络进程已经开始下载响应后),知道渲染器进程会将导航提交至哪个源和URL。如果浏览器进程的验证机制不够严谨,就容易出现安全漏洞。 在测试导航的处理过程时,我注意到,如果源是一个不透明的源(opaque origin),我就可以佯称导航已经提交至渲染器进程的任何URL。之所以存在这个漏洞,是因为任何URL都可以是一个不透明的源(使用iframe/CSP沙箱),所以对常规的的源与URL进行检查是没有任何意义的。目前,这个检查已经得到了加强,以确保地址栏欺骗无法实施。 滥用协议处理程序 我的另一个想法是,如果我可以使用registerProtocolHandler API来导航任何协议到一些“坏”的URL(例如Data URL),结果会如何?所以,我检查了它们的实现代码,发现下面的限制是可以绕过/欺骗的: 协议/scheme必须位于allow-list中:
解决方案: 第一个方案:把入参用实体类接收,不要使用JsonObject 第二个方案:与上面的解决Date类型问题类似,自己定义一个Adaptor,来接受数字,并且处理。这种想法我觉得可行但是难度较大,可能会影响到别的类型的解析,需要在设计适配器的时候格外注意。 总结 这篇文章主要是为了那些需要将项目迁移到Gson框架的同学们准备的。 一般来说,个人小项目,是不需要费这么大精力去做迁移,所以这篇文章可能目标人群比较狭窄。
但文章中也提到了不少通用问题的解决思路,比如怎么评估迁移框架的必要性。其中需要考虑到框架兼容性,两者性能差异,迁移耗费的工时等很多问题。 (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |