0

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

ng build --subresource-integrity

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

我觉得这就像我可能永远不知道的鸡和蛋的问题?

4

1 回答 1

0

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

请注意,这除了检测恶意 CDN 之外还有其他好处。SRI 提供的是保证加载的资源与您在创建页面时打算加载的资源相同。在部署到某个地方之前,资源可能会在 CI 管道之类的东西上发生很多事情,它们将在构建期间存储在中间服务器上,复制到 CDN 等等,SRI 确保所有这些到客户端浏览器的完整性. 但同样,只要包含这些资源的页面不受影响。

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

编辑:我可能误解了这个问题。

NPM 包使用 PGP 签名,因此只要您只有受信任的密钥,获取依赖项是安全的。

于 2021-02-17T11:42:05.913 回答