推荐答案
Subresource Integrity (SRI) 是一种安全特性,用于确保从外部服务器加载的资源(如脚本或样式表)在传输过程中未被篡改。它通过使用加密哈希值来验证资源的完整性。
用法
在 HTML 中,可以通过在 <script>
或 <link>
标签中添加 integrity
属性来使用 SRI。该属性的值是一个由哈希算法(如 SHA-256、SHA-384 或 SHA-512)生成的哈希值,后跟一个连字符和哈希值本身。
<script src="https://example.com/example.js" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous"></script>
作用
- 防止资源篡改:确保从外部服务器加载的资源未被第三方篡改。
- 增强安全性:防止恶意代码注入,保护用户数据安全。
- 提高信任度:确保资源来源可信,增强用户对网站的信任。
本题详细解读
什么是 Subresource Integrity (SRI)?
Subresource Integrity (SRI) 是一种安全机制,允许浏览器验证从外部服务器加载的资源(如 JavaScript 文件、CSS 文件等)是否在传输过程中被篡改。它通过使用加密哈希值来确保资源的完整性。
如何生成 SRI 哈希值?
可以使用工具如 openssl
或在线生成器来生成 SRI 哈希值。例如,使用 openssl
生成 SHA-384 哈希值的命令如下:
openssl dgst -sha384 -binary example.js | openssl base64 -A
如何在 HTML 中使用 SRI?
在 HTML 中,通过在 <script>
或 <link>
标签中添加 integrity
属性来使用 SRI。integrity
属性的值由哈希算法名称和哈希值组成,格式如下:
integrity="sha384-<hash-value>"
跨域资源与 SRI
当使用 SRI 加载跨域资源时,必须设置 crossorigin
属性为 anonymous
或 use-credentials
,以确保浏览器能够正确验证资源的完整性。
<script src="https://example.com/example.js" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous"></script>
SRI 的局限性
- 性能开销:浏览器需要计算资源的哈希值,可能会增加加载时间。
- 兼容性:并非所有浏览器都支持 SRI,需要确保目标用户使用的浏览器支持该特性。
- 维护成本:每次资源更新时,都需要重新生成并更新哈希值,增加了维护成本。