我如何知道我的子资源完整性标签(SRI)不是由恶意CDN生成的?



我知道在Angular中,例如,当构建项目时,你可以使用以下命令自动添加子资源完整性(SRI)标签:

ng build --subresource-integrity

我的问题是,当我运行该命令时,我如何知道所创建的哈希不是来自恶意CDN?

我觉得这变成了一个鸡和蛋的问题,因为我可能永远不会知道?

SRI保护页面中加载资源的完整性。它可以防止此类资源的存储被泄露,但前提是页面本身不在该泄露的存储中。加载资源的页面是特殊的,因为它有机会检查SRI,就像这些资源的来源是不受信任的一样,但是您需要能够从受信任的来源提供页面。

请注意,这样做的好处不仅仅是检测恶意CDN。SRI提供的是确保加载的资源与创建页面时打算加载的资源相同。在被部署到某个地方之前,像CI管道这样的资源可能会发生很多事情,它们将在构建期间存储在中间服务器上,复制到cdn等等,SRI确保所有这些的完整性,一直到客户端浏览器。但是,只要包含这些资源的页面不被破坏,

换句话说,如果页面与资源一起存储在同一个CDN中,那么SRI将无法防止CDN的破坏-当您信任它为您提供所有内容时,它怎么可能呢?但是,它仍然可以防止这些文件进入CDN的管道受到损害。

我可能误解了这个问题。

NPM包是用PGP签名的,所以只要你只有可信的密钥,获取依赖是安全的。

最新更新