Es6 modules es6导入或工作程序的子资源完整性

Es6 modules es6导入或工作程序的子资源完整性,es6-modules,subresource-integrity,Es6 Modules,Subresource Integrity,接受完整性属性,以便安全加载模块: 但在脚本中加载模块时如何保证安全 进口: 从导入foo”https://example.com/module.mjs" 动态导入: 导入(“https://example.com/module.mjs)然后(console.log) 甚至网络工作者: const myWorker=new Worker('Worker.js') 请查看此问题 您可以使用RequireJS,并将代码传输到AMD或UMD以实现这一点。RequireJS有一个

接受
完整性
属性,以便安全加载模块:


但在脚本中加载模块时如何保证安全

  • 进口:
从导入foo”https://example.com/module.mjs"
  • 动态导入:
导入(“https://example.com/module.mjs)然后(console.log)
  • 甚至网络工作者:
const myWorker=new Worker('Worker.js')

请查看此问题

您可以使用RequireJS,并将代码传输到AMD或UMD以实现这一点。RequireJS有一个钩子onNodeCreated,它允许您在将脚本标记添加到文档之前访问它。您可以将sri属性添加到脚本标记上:

onNodeCreated: function(node, config, module, path) { node.setAttribute('integrity', integrityForModule); node.setAttribute('crossorigin', 'anonymous'); }
学分:


我使用Webpack(目标是UMD)和RequireJS。相关模块放在网页包配置文件的外部部分,因此模块不会编译成传输代码。

很抱歉,我没有回答您的问题,但我想知道您是如何实现src文件的哈希部分的?@henhen,您是在谈论
完整性
属性吗?你可以在这里了解全部情况:是的,我已经阅读了那份文件。我只是不明白如何将它合并到我的项目中,例如节点/反应项目?我的package.json中是否必须有一个脚本才能运行命令来生成哈希值?在示例中,它使用
cat FILENAME.js | openssl dgst-sha384-binary | openssl base64-A
,其中
FILENAME.js
是他们想要散列的文件。但我想知道是否必须将其合并到package.json中,并将其分配给一个全局变量。另外,不要执行
FILENAME.js
而是将我的CDN链接放在那里可以吗?如果我在我的机器上本地为我的文件生成哈希值,我假设相同的密钥在环境中不起作用?我的文件在我的整个组织中都被使用,我想知道我在本地生成的一个密钥是否能让任何使用它的人都使用它。看起来已经有这样一个问题了,答案与我的建议类似:)