当然,我并不是第一个想到这个问题的人。但是,我无法找到关于这个问题的任何文章(更不用说任何解决方案)这一事实促使我怀疑这个问题没有规范的解决方案:
假设我有一个受信任的网络服务器,它使用HTTPS提供网页,网页从第三方网络服务器(如CDN或类似网站)加载某些第三方库。现在,原则上,没有什么可以阻止CDN提供某些恶意JavaScript。这是一个问题,当然,除非我可以验证使用加密签名从第三方服务器提供的JavaScript文件的真实性。
鉴于我可以动态加载js文件,现在存在加密库这应该是可能的。还是我在监督什么?现有的javascript-Libraries是否可以解决这个问题?
答案 0 :(得分:0)
可能,是的,你可以在某个时间点自己创建签名,将它们存储在你的服务器上,当你的网页被加载时,你可以流式传输JS文件,计算它们的签名,验证它们,然后询问浏览器使用JS文件,如果它们有效。
问题是,如果第三方作者更新了库,那么在您验证新代码并更新服务器上的签名之前,您的方案将停止工作。
此外,从您的站点加载加密库的必要性通常会抵消将CDN用于其他脚本的好处。