背景与价值Import Maps可指定模块解析来源。进行白名单与版本锁定治理,可降低外部模块引入风险。统一规范白名单映射:仅允许受控域与版本化路径。版本锁定:模块映射固定版本与哈希指纹。审计:记录加载映射与外部源,异常阻断。核心实现映射校验type ImportMap = { imports: Record<string, string> } const allowOrigins = new Set(['https://cdn.example.com','https://assets.example.com']) function originAllowed(url: string): boolean { try { const u = new URL(url); return allowOrigins.has(u.origin) } catch { return false } } function versioned(path: string): boolean { return /@[0-9]+\.[0-9]+\.[0-9]+\//.test(path) || /\.[a-f0-9]{8,}\./.test(path) } function validateImportMap(map: ImportMap): boolean { for (const [name, url] of Object.entries(map.imports)) { if (!originAllowed(url)) return false if (!versioned(url)) return false if (!/^[@A-Za-z0-9_\-\.]+$/.test(name)) return false } return true } 落地建议仅从受控CDN与版本化路径加载模块,模块名与路径均需校验。对映射变更执行审计与审批,异常立即阻断加载。验证清单映射是否命中白名单与版本锁定;模块名是否合法。

发表评论 取消回复