您现在的位置是:网站首页 > 如何使用Subresource Integrity (SRI)验证外部资源文章详情

如何使用Subresource Integrity (SRI)验证外部资源

陈川 性能优化 19579人已围观

在现代Web开发中,安全性和性能优化是至关重要的。Subresource Integrity (SRI) 是一种用于增强内容安全策略的技术,它允许开发者为外部资源(如脚本、样式表和图片)添加哈希值,确保这些资源未被篡改或替换。本文将详细阐述如何使用 SRI 验证外部资源,并提供一个简单的前端代码示例。

1. 了解 Subresource Integrity (SRI)

SRI 是一种基于 HTTP header 的内容安全策略扩展,旨在防止跨站脚本(XSS)攻击。通过在 HTML 元素的 integrity 属性中添加哈希值,开发者可以确保加载的资源与预期版本匹配,从而提高网站的安全性。

2. 创建哈希值

在使用 SRI 验证外部资源之前,需要首先创建哈希值。这可以通过多种工具实现,例如在线哈希生成器或使用命令行工具(如 shasumsha256sum)。

示例:生成脚本文件的 SHA256 哈希值

假设我们有一个名为 my-script.js 的脚本文件,我们可以使用 shasum 命令生成其 SHA256 哈希值:

shasum -a 256 my-script.js

输出结果类似于:

c08b7f5c1e4f52c39a9d9f74f974b34c7d9eacf5  my-script.js

这意味着 my-script.js 的哈希值为 c08b7f5c1e4f52c39a9d9f74f974b34c7d9eacf5

3. 应用 SRI 到 HTML 元素

有了哈希值后,就可以将其应用于 HTML 元素的 integrity 属性。这样,当浏览器尝试加载资源时,它会同时计算提供的哈希值以及实际加载到的内容的哈希值进行比较。

示例代码:HTML 使用 SRI 验证脚本

假设我们有以下 HTML 结构,其中包含一个外部 JavaScript 脚本:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Subresource Integrity Example</title>
</head>
<body>
    <script src="https://example.com/my-script.js" integrity="c08b7f5c1e4f52c39a9d9f74f974b34c7d9eacf5" crossorigin="anonymous"></script>
</body>
</html>

在这个例子中,integrity 属性包含了之前生成的哈希值,确保只有与该哈希值匹配的脚本才会被加载。

4. 安全注意事项

  • 哈希值更新:每当资源的源代码发生变化时,都需要重新生成哈希值并更新 integrity 属性。
  • 避免注入:确保所有依赖于 SRI 的资源都是可信来源,防止潜在的注入攻击。
  • 性能考虑:频繁地计算和验证哈希值可能会对性能产生影响。因此,在实际应用中,应权衡安全性和性能需求。

结论

通过使用 Subresource Integrity (SRI),开发者能够显著提升 Web 应用的安全性,防止资源被恶意篡改。本文介绍了从生成哈希值到在 HTML 中应用 SRI 的完整流程,并提供了具体的代码示例。在实施 SRI 时,请注意定期更新哈希值以适应资源的变化,并始终关注性能优化。

我的名片

网名:川

职业:前端开发工程师

现居:四川省-成都市

邮箱:chuan@chenchuan.com

站点信息

  • 建站时间:2017-10-06
  • 网站程序:Koa+Vue
  • 本站运行
  • 文章数量
  • 总访问量
  • 微信公众号:扫描二维码,关注我
微信公众号
每次关注
都是向财富自由迈进的一步