概述
从 CDN 加载的第三方脚本若无完整性校验,CDN 上被篡改的文件会在每位用户浏览器中执行任意代码。SRI 让浏览器在执行前校验字节哈希,把信任从 CDN 转移到构建期固定的散列值。
关键步骤
- 构建期对每个第三方资产生成强哈希(sha384)。
- 在标签上添加 integrity 与 crossorigin。
- 在构建中校验固定哈希是否仍与抓取到的资产一致。
- 仅在有意升级依赖时重新生成哈希。
验证
- 浏览器在执行前校验字节哈希。
- 资源变更但未更新哈希时构建失败。
- 跨域资源在正确 CORS 下通过校验。
- 升级依赖时哈希同步更新。
注意事项
- SRI 只适用于你掌控哈希的脚本与样式,无法保护运行时拉取的动态导入。
- 它失败即关闭,CDN 未经通知改动字节会中断该资源,直到哈希更新。
适用范围
本条目围绕「用子资源完整性固定 CDN 资源」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
<script src="https://cdn.example.com/lib-4.2.1.min.js"
integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
crossorigin="anonymous"></script>