javascript es6导入或工作进程的子资源完整性

cuxqih21  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(131)

<script>接受integrity属性,所以我可以安全地加载一个模块:

<script type="module"
  src="https://example.com/module.mjs"
  integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
  crossorigin="anonymous"
></script>

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

  • 导入:
import foo from "https://example.com/module.mjs"
  • 动态导入:
import("https://example.com/module.mjs").then(console.log)
  • 甚至是网络工作者:
const myWorker = new Worker('worker.js')
qvk1mo1f

qvk1mo1f1#

请看这个问题
Is it possible to use subresource integrity with ES6 module imports?
你可以使用RequireJS,并将你的代码移植到AMD或UMD来实现这一点。RequireJS有一个onNodeCreated钩子,它允许你在脚本标记被添加到文档之前访问它。你可以将sri属性添加到脚本标记上:

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

贷方:https://stackoverflow.com/a/37065379
我使用Webpack(目标是UMD)和RequireJS,相关模块放在Webpack配置文件的external部分,所以模块没有编译成翻译的代码。

相关问题