当前位置:首页 > 资讯列表 >CDN引入外部资源时启用integrity校验的优势

CDN引入外部资源时启用integrity校验的优势

发布时间:2026-06-22 09:33:07 分类:营销学堂

1. 什么是SRI与integrity属性?

SRI是一项W3C规范,它允许浏览器验证所获取的外部资源是否与预期内容完全一致。其核心是通过 integrity 属性在HTML标签中嵌入资源的加密哈希值:

<script 
  src="https://cdn.example.com/library.js"
  integrity="sha256-abc123..."
  crossorigin="anonymous">
</script>

当浏览器下载资源后,会计算其内容的哈希值,与 integrity 中的值比对。若匹配,则正常执行;否则拒绝执行并抛出错误。这有效防止了CDN被攻破、中间人攻击或意外文件损坏带来的风险。

2. 核心好处详解

3. 如何正确添加integrity属性?

第一步:生成哈希值

主流CDN服务(如cdnjs、jsDelivr、unpkg)已直接在资源页面提供完整的 integrity 值。若自行托管或使用定制构建,可通过命令行生成:

# 生成SHA-384哈希(推荐)
cat library.js | openssl dgst -sha384 -binary | openssl base64 -A

# 或使用shasum
shasum -b -a 384 library.js | awk '{ print $1 }' | xxd -r -p | base64

最终格式为:sha384-{base64哈希值}

第二步:添加到HTML标签

<!-- 单个哈希 -->
<link 
  rel="stylesheet" 
  href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
  integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
  crossorigin="anonymous">

<!-- 支持多哈希(备选算法) -->
<script 
  src="https://code.jquery.com/jquery-3.7.1.min.js"
  integrity="sha384-... sha512-...">
</script>

第三步:务必设置crossorigin属性

没有 crossorigin="anonymous",浏览器会绕过SRI检查。该属性要求请求不带用户凭证,适用于公共CDN资源。