SRI Hash

Subresource Integrity

SRI Hash 在线生成器

粘贴 CDN 上的 JS / CSS 资源链接,立刻得到 integrity 校验值与可直接粘贴的完整标签。 支持 SHA-256、SHA-384、SHA-512,为你的第三方资源加上防篡改校验。

sha256 / 384 / 512 自动生成标签 浏览器本地计算

快捷键:Ctrl+K 定位输入框,Ctrl+C 复制标签,Ctrl+I 仅复制 integrity 值

生成结果

生成后的 script / link 标签会显示在这里

关于子资源完整性

什么是子资源完整性(SRI)?

SRI 是一种 W3C 规范, 用于确保托管在第三方服务器上的资源没有被篡改。当从 BootCDN、StaticFile、ZStatic.net 等第三方来源加载库时, 建议始终加上 integrity 属性作为最佳实践。可在 MDN 上了解 如何使用 SRI。

SRI 与 HTTPS 的区别

TLS 只确保浏览器与服务器之间的连接是安全的,攻击者仍可能在服务器端修改资源内容植入恶意代码,即使 TLS 证书完全有效。 SRI 则保证资源内容自作者散列之后没有被改动——两者作用互补,缺一不可。

如何自行计算 SRI Hash?

除使用本在线生成器外,也可以在本地用命令计算:

openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A

命令输出即为 integrity 值(前面加上 sha384-)。

为什么需要 crossorigin="anonymous"?

当资源并非同源时,必须声明 crossorigin 属性浏览器才会校验完整性。缺少该属性时, 浏览器会选择「fail open」—— 像未设置 integrity 一样直接加载资源,从而失去 SRI 的全部保护。

crossorigin="anonymous" 不会向第三方服务器发送凭证信息,但会发送 Origin 请求头。如果服务器拒绝跨域(未返回 Access-Control-Allow-Origin),该资源将不会被浏览器使用。 详见 MDN 文档。

浏览器支持

在 caniuse.com 查看具体版本的支持情况;要全面测试当前浏览器对 SRI 的支持, 可打开 WPT 测试页面。

浏览器支持子资源完整性(SRI)