SRI 哈希生成器


          

什么是子资源完整性?

SRI 是一项新的 W3C 规范,允许 Web 开发人员确保托管在第三方服务器上的资源未被篡改。每当从第三方源加载库时,建议使用 SRI 作为最佳实践。

在 MDN 上了解有关 如何使用子资源完整性的更多信息


子资源完整性与 HTTPS 有何不同?

TLS 确保浏览器和服务器之间的连接是安全的。资源本身仍可能被攻击者在服务器端修改以包含恶意内容,但仍会使用有效的 TLS 证书提供服务。另一方面,SRI 保证资源自被 Web 作者散列后没有发生变化。


我如何生成完整性哈希?

使用上面的生成器或以下 shell 命令:
openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A


为什么我需要包括 crossorigin="anonymous"

当请求不在同一来源时, crossorigin 必须存在属性来检查文件的完整性。
如果没有 crossorigin 属性,浏览器将选择“失败打开”,这意味着它将加载资源,就好像未设置完整性属性一样,实际上首先失去了 SRI 带来的所有安全性。

crossorigin="anonymous" 结果是没有凭据发送到托管内容的跨源站点。但是,它会发送 Origin HTTP 标头。如果服务器拒绝包含资源(通过不设置 Access-Control-Allow-Origin HTTP 标头),浏览器将不会使用该资源。您可以在 MDN上找到更多信息。


测试你的浏览器

查看 caniuse.com上的SRI 以了解特定浏览器版本的支持信息。

要全面测试您的浏览器对子资源完整性的支持,请打开 此页面

Pass

您的浏览器支持 SRI

Fail

您的浏览器不支持 SRI