Subresource Integrity
SRI Hash 在线生成器
粘贴 CDN 上的 JS / CSS 资源链接,立刻得到 integrity 校验值与可直接粘贴的完整标签。 支持 SHA-256、SHA-384、SHA-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 测试页面。