首页/安全/渗透测试与安全评估速查/子资源完整性(SRI)检查
常见漏洞验证121 条

子资源完整性(SRI)检查

第三方脚本使用 integrity 校验可防止 CDN 被篡改导致脚本被替换;检查关键外部脚本是否配置 SRI 与 crossorigin。

SRI 校验什么

子资源完整性(SRI)通过在 script 与 link 标签上声明资源内容的哈希值,让浏览器在加载第三方 CDN 资源时校验内容是否被篡改。检查点是:关键外部脚本与样式是否配置了完整性属性与跨域属性。需要注意的是 SRI 对动态注入的脚本无效,也不能覆盖接口返回的数据本身,因此它与内容安全策略是互补关系。

基本信息

适用平台所有引用第三方 CDN 资源的 Web 前端
检查属性完整性(integrity)与跨域(crossorigin)
哈希算法常见 sha256、sha384、sha512
失败行为校验不一致时浏览器拒绝执行该资源

典型使用场景

  • 第三方脚本供应链风险盘点
  • 排查历史上 CDN 被篡改类安全事件的相关入口
  • 前端资源治理中区分本地托管与外部引用
  • 上线前检查关键脚本的完整性配置
  • 为 CSP 与资源治理方案提供现状清单

检查方式

检查方式
1. 抓取页面外部资源引用清单,区分自有域与第三方域
2. 核对 script 与 link 标签是否带完整性属性与跨域属性
3. 记录缺失 SRI 的资源、来源域名与其加载顺序(是否阻塞首屏)
4. 评估第三方资源是否频繁更新(频繁更新会带来维护成本)
5. 输出:缺失清单 + 修复建议(本地托管或加 SRI 并锁定版本)+ 配合 CSP 的加固建议

检查点与判据

检查点安全实现风险表现
完整性属性关键脚本与样式均配置哈希第三方脚本无校验
跨域属性与完整性属性配套设置缺失导致校验直接失败
版本锁定引用固定版本地址引用最新版本地址
动态注入改由 CSP 管控运行时注入资源不受 SRI 覆盖
降级处理校验失败有明确提示校验失败导致页面功能异常
给频繁更新的资源加 SRI 会导致线上白屏:资源每次更新哈希都要同步修改页面引用,因此更稳妥的做法是关键脚本本地托管,非关键第三方资源再加 SRI。
SRI 与内容安全策略配合使用更完整:SRI 保证资源内容未被篡改,策略限制资源加载来源,两者分别覆盖内容与来源两个维度。

易错点

  • 给频繁更新的第三方资源加 SRI 却未同步更新哈希,导致线上资源加载失败
  • 只配置完整性属性而漏掉跨域属性,浏览器校验直接失败
  • 认为加了 SRI 就覆盖了全部脚本风险,忽略动态注入的脚本
  • 把核心业务脚本长期依赖外部 CDN,可用性与供应链风险叠加
  • 引用“最新版本”地址而非固定版本,内容变化无法预期

数据来源与参考

  • W3C Subresource Integrity
  • MDN SRI 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌