SRI的完整性和跨域值是否保存在package.json或其他地方?

时间:2018-07-17 07:19:44

标签: html html5 npm cors subresource-integrity

这是bootstrap的官方CDN样式表:

<link rel="stylesheet" 
      href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css"
      integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B"
      crossorigin="anonymous">

但是在我的标记中,我不对版本进行硬编码,因为这可能会发生变化,因此我将其从构建系统或应用程序中删除。一个虚构的例子:

<link rel="stylesheet" href="https://foo.bar.com/jquery/$VERSION/all.min.js" />

您可以看到$VERSION未被硬编码。因此,我可以更改在构建过程中使用的版本(在package.json中),而不必编辑应用程序。

现在,我想以相同的方式添加integrity。我希望可以在package.json中找到它,但是对于bootsrap来说,它不存在。我也假设要使用其他软件包。

我知道我可以calculate it这样:

echo -n "alert('Hello, world.');" | openssl dgst -sha384 -binary | openssl base64 -A

但我不想使构建系统过于复杂。

是否有一些地方可以从中获取此值,而不必对其进行硬编码?我会从项目的package.json(或node_modules/bootstrap中的版本)中自动提取该版本,因此希望为完整性做些类似的事情。

1 个答案:

答案 0 :(得分:0)

由于无法从package.json或软件包目录中的其他位置轻松访问该值,因此我使用ssri npm module

需要做更多的工作,但看起来没有更好的方法。