← 中文资源

简体中文版本

用子资源完整性固定 CDN 资源

为第三方脚本与样式添加 SRI 哈希并正确使用 crossorigin,资产版本变化时重新生成哈希,使被劫持的 CDN 无法注入代码。

阅读英文原文

概述

从 CDN 加载的第三方脚本若无完整性校验,CDN 上被篡改的文件会在每位用户浏览器中执行任意代码。SRI 让浏览器在执行前校验字节哈希,把信任从 CDN 转移到构建期固定的散列值。

关键步骤

  1. 构建期对每个第三方资产生成强哈希(sha384)。
  2. 在标签上添加 integrity 与 crossorigin。
  3. 在构建中校验固定哈希是否仍与抓取到的资产一致。
  4. 仅在有意升级依赖时重新生成哈希。

验证

  • 浏览器在执行前校验字节哈希。
  • 资源变更但未更新哈希时构建失败。
  • 跨域资源在正确 CORS 下通过校验。
  • 升级依赖时哈希同步更新。

注意事项

  • SRI 只适用于你掌控哈希的脚本与样式,无法保护运行时拉取的动态导入。
  • 它失败即关闭,CDN 未经通知改动字节会中断该资源,直到哈希更新。

适用范围

本条目围绕「用子资源完整性固定 CDN 资源」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

<script src="https://cdn.example.com/lib-4.2.1.min.js"
  integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
  crossorigin="anonymous"></script>