SRI 的完整性和跨域值是不是保存在 package.json 或其他地方?
Posted
技术标签:
【中文标题】SRI 的完整性和跨域值是不是保存在 package.json 或其他地方?【英文标题】:Are SRI's integrity and crossorigin values kept in package.json or elsewhere?SRI 的完整性和跨域值是否保存在 package.json 或其他地方? 【发布时间】:2018-12-24 19:18:11 【问题描述】:这是 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】:由于无法从 package.json
或包目录中的其他位置轻松访问该值,因此我使用 s-s-ri npm module。
更多工作,但似乎没有更好的方法。
【讨论】:
以上是关于SRI 的完整性和跨域值是不是保存在 package.json 或其他地方?的主要内容,如果未能解决你的问题,请参考以下文章