黑客

引用外部JS带来的安全问题

在nodeloc看到一个大佬写的帖子,感觉有用,特此收藏一下,主要是讲网站引用某些外部的js库可能会造成安全风险和加载问题,全文如下。

引用外部js

另外再说说论坛的事。

论坛有一个js文件,看上去很平常。如果看过安全圈的新闻,就会发现这种引用有问题。

首先这个外部js是没有用async=""或者defer=""加载的。
这个js又在<head>区块中,这说明什么问题?
说明是这个js是同步加载的,并且要等这个js加载完才会加载正文<body>

JS加载速度问题

当cdn.jsdelivr.net域名连接性不好时,发过去的http包drop掉时,浏览器会一种等待这个js加载完成或者1分钟超时断开连接才加载正文。

会发生什么,用俗话来讲,就是cdn.jsdelivr.net加载的时候会白屏(因为body没加载)(不过tcp reset由于会迅速断开,反而不受影响)

还有,这种方式
<script src=“https://example.com/example-framework.js"></script>

直接引用一个外部js而不进行任何校验是十分危险的,而且还是这种任何人都有编辑权限的仓库,github,npm等等

即使现在指向官方,也不能保证未来官方仓库改名,删库后(然后被建了同名仓库顶替),或者被篡改(源仓库被黑,或者中间cdn被劫持等等)等等。

这个圈内有很多利用的例子,连xss都省了,直接钓走登录cookie。

正确引用外部JS方法

正确做法减少外部js引用,如果必须要引用,必须校验js的hash(如sha256等等)。

<script src=“https://example.com/example-framework.js” integrity=“sha256-Kap7fdgcCY5u+R9GqQ8K/uxy9rx7GYl1kPzQho1wx4Jw” crossorigin=“anonymous”></script>

我了解这个integrity是看到一个新闻,好像是某交易所网站引用外部js未校验的事情,结果上游js被篡改,导致用户币被盗走了。

原文链接:https://www.nodeloc.com/d/3705


阅读量:0