Dynamic Import Host Adjustment ?
中文标题:动态导入宿主调整
提案概览
- 阶段: 未分阶段
- 状态: 已撤回
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案解决动态导入运算符的安全问题,通过赋予宿主对模块加载更多的控制权。它调整了宿主回调,使其能够接收原始说明符(在字符串化之前)并控制字符串化过程,与可信类型集成。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
动态导入宿主调整
可信类型 保护敏感 API;在对不可撤销的操作执行之前,它会双重检查值是否已通过策略代码获得信任。
动态导入运算符 import(...) 会加载代码并初始化模块。从不值得信任的来源加载代码是一个无法撤销的操作。
此提案调整了启用动态加载的宿主回调。有了它:
- 宿主会收到原始的说明符(在字符串化之前),因此可以使用运行时类型信息来决定是否允许代码加载继续进行。
- 宿主回调可以控制字符串化过程并将结果传递给 FinishDynamicImport,以避免重复字符串化,并与默认策略集成。
测试
将要编写的测试将以 web-platform-tests 的形式实现,并将重点放在以下属性上:
- 多态对象只被字符串化一次。类似如下:
- 上述情况,同时覆盖 null 和非 null 引用模块。
- 针对可信类型宿主实现的具体测试。
另请参见 webappsec-csp #243
关于 import('data:...') 作为 CSP 绕过的问题。