当前位置:首页 > 文章列表 > 文章 > 前端 > SRI验证外部脚本安全方法解析

SRI验证外部脚本安全方法解析

2026-05-29 17:22:40 0浏览 收藏
SRI(子资源完整性)并非一劳永逸的安全开关,它仅在脚本URL稳定、哈希值精确匹配远程响应体(而非本地文件)、浏览器支持且正确配置crossorigin属性的前提下才生效;用错会导致脚本静默失败、页面白屏,而控制台错误提示模糊、排查困难——真正棘手的不是生成哈希,而是生产环境CDN响应体的细微变化(如压缩差异、BOM、缓存更新、重定向)让旧哈希瞬间失效,这类问题常在灰度发布后数小时才暴露,且难以被常规自动化测试捕获。

如何用 Subresource Integrity (SRI) 确保外部脚本未被篡改

直接给结论:SRI 不是「开了就安全」的开关,它只在脚本 URL 固定、哈希值正确、且浏览器支持时才生效;用错地方反而会阻断加载,导致功能白屏。

什么是 SRI 的 integrity 属性,它实际校验什么

SRI 的核心是 integrity 属性,它不是校验域名或证书,而是对远程资源(比如 CDN 上的 lodash.min.js)的响应体做哈希比对。浏览器下载完脚本后,会计算其内容的 SHA-256/384/512 哈希值,再跟 integrity 中的值比对——不一致就拒绝执行,连 onerror 都不会触发。

  • 必须搭配 crossorigin 属性使用,否则浏览器忽略 integrity(即使写了也无效)
  • 哈希值必须与实际响应体完全一致,包括换行、BOM、压缩与否——本地构建时 minify 工具微小差异都会导致失败
  • 只支持