加载中...
子资源完整性是一种让浏览器校验外部加载的脚本或样式是否被篡改的安全机制。开发者在标签中提供资源的哈希值,浏览器只有在下载内容的哈希匹配时才执行,从而防范 CDN 被污染或第三方资源被恶意替换。

| 类型 | 浏览器完整性校验 |
| 实现方式 | integrity 属性 + 哈希 |
| 常用算法 | SHA-256/384/512 |
| 主要防御 | CDN 污染、资源篡改 |
| 配合技术 | CORS、HTTPS |
子资源完整性(Subresource Integrity,SRI)是一种浏览器安全特性,允许网页在引入外部脚本或样式表时附带该资源的密码学哈希值。浏览器下载资源后会校验其哈希,只有完全匹配才会加载执行,以确保内容未被篡改。
现代网站大量从内容分发网络或第三方托管引入公共库和脚本。如果这些外部来源被入侵,攻击者便能悄悄替换文件,向大量引用它的网站植入恶意代码,形成供应链式攻击。SRI 针对这一风险,让网站开发者事先锁定所期望资源的确切内容指纹,把是否可信的判断权收回到自己手中,而不再无条件信任外部服务器返回的任何内容。
SRI 的实现依赖标签上的完整性属性和浏览器的校验流程。
SRI 最常见于引入公共 JavaScript 库和 CSS 框架的场景。当网站从公共 CDN 加载知名库时,附上官方提供的哈希值,即可保证即便 CDN 遭污染也不会加载被动过手脚的文件。许多在线的哈希生成工具和构建流程都能自动为静态资源生成 integrity 值,使其易于集成到日常开发中,成为防御第三方资源投毒的低成本手段。
问:SRI 适合校验会频繁变动的资源吗?答:不适合。SRI 锁定的是固定内容的哈希,若资源频繁更新则需同步更新哈希,因此更适合版本固定的库文件,而非动态生成的内容。
问:SRI 和 HTTPS 有重叠吗?答:HTTPS 保证传输过程不被中间人篡改,但无法防止源服务器本身被攻破后提供恶意文件;SRI 校验的是内容本身,二者互补而非替代。

| 类型 | 浏览器完整性校验 |
| 实现方式 | integrity 属性 + 哈希 |
| 常用算法 | SHA-256/384/512 |
| 主要防御 | CDN 污染、资源篡改 |
| 配合技术 | CORS、HTTPS |
登录 后参与讨论
暂无讨论,来发表第一条评论吧