什么是子资源完整性(SRI)?
子资源完整性(SRI)是一项安全功能,允许浏览器验证从外部源(如 CDN)加载的文件是否未被修改或破坏。当您向 <script> 或 <link> 标签添加完整性属性时,浏览器会将下载文件的哈希值与预期哈希值进行比较。如果不匹配,浏览器将阻止该资源。
为什么使用 SRI?
从第三方 CDN 加载 JavaScript 或 CSS 很方便,但会带来安全风险。如果 CDN 被破坏,攻击者可能会向您的网站注入恶意代码。SRI 通过确保只执行文件的确切验证版本来消除这种风险。
防止供应链攻击
保护用户数据
符合安全标准
它如何工作?
SRI 使用密码学哈希函数(SHA-256、SHA-384 或 SHA-512)为文件内容创建指纹。此哈希值作为 integrity 属性添加到 HTML 标签中,同时添加 crossorigin="anonymous" 以启用基于 CORS 的验证。
如何使用 SRI 哈希生成器
粘贴文件内容
复制您要保护的 JavaScript 或 CSS 文件的完整内容,并将其粘贴到内容文本框中。当您输入或粘贴时,哈希值会自动生成。
选择算法
从工具栏中选择哈希算法。SHA-384 默认选中,是 SRI 的推荐选择。您也可以根据需要使用 SHA-256 或 SHA-512。
设置标签类型
选择资源是 <script>(JavaScript)还是 <link>(CSS 样式表)。如果您输入带有 .js 或 .css 扩展名的 URL,标签类型会自动检测。
添加资源 URL(可选)
在资源 URL 字段中输入资源的 CDN URL。此 URL 将用于生成的 HTML 标签的 src 或 href 属性。如果留空,将使用占位符 URL。
复制输出
使用复制按钮复制完整性哈希值或完整 HTML 标签。将标签直接粘贴到您的 HTML 中以启用 SRI 保护。
主要功能
多种哈希算法
使用 SHA-256、SHA-384 或 SHA-512 生成 SRI 哈希值。SHA-384 是默认推荐算法,符合 W3C SRI 规范。
- SHA-256 用于基本安全
- SHA-384(推荐)
- SHA-512 用于最高强度
- 即时算法切换
自动检测标签类型
当您输入资源 URL 时,工具会自动检测它是 JavaScript 文件还是 CSS 样式表,并选择相应的标签类型。
- 自动检测 .js 文件
- 自动检测 .css 文件
- 支持手动覆盖
- 智能 URL 解析
可直接使用的 HTML 输出
获得包含完整性和 crossorigin 属性的完整 HTML 标签。只需复制并粘贴到您的 HTML 文档中。
- 完整的 <script> 标签
- 完整的 <link> 标签
- 包含 CORS 属性
- 无需手动编辑
一键复制
只需单击一次即可复制完整性哈希值或完整 HTML 标签。复制到剪贴板时会显示视觉确认。
- 仅复制哈希值
- 复制完整 HTML 标签
- 视觉确认
- 即时剪贴板访问
客户端处理
所有哈希计算完全在您的浏览器中使用 Web Crypto API 进行。您的文件内容永远不会上传到任何服务器。
- 100% 基于浏览器
- 无服务器上传
- 完全隐私
- 离线工作
实时生成
当您输入或粘贴内容时,哈希值会立即计算。无需点击生成按钮或等待处理。
- 即时哈希计算
- 实时预览更新
- 无延迟或等待
- 高效处理
常见问题
我应该为 SRI 使用哪种算法?
SHA-384 由 W3C 推荐,是 SRI 最广泛使用的算法。它在安全性和性能之间提供了很好的平衡。所有现代浏览器都支持 SHA-256 和 SHA-512。
我需要 crossorigin 属性吗?
是的。crossorigin="anonymous" 属性是 SRI 与从不同源(如 CDN)加载的资源配合使用所必需的。没有它,浏览器无法验证跨源资源的完整性。
anonymous 值意味着请求中不发送凭证(cookie、HTTP 身份验证),这是公共 CDN 资源的标准配置。
如果哈希值不匹配会发生什么?
如果下载文件的哈希值与完整性属性不匹配,浏览器将拒绝执行脚本或拒绝应用样式表。这可以保护您的网站免受加载受损文件的影响。
CDN 需要支持 CORS 吗?
是的。托管资源的服务器必须包含 Access-Control-Allow-Origin 标头才能使 SRI 验证工作。大多数流行的 CDN(jsDelivr、cdnjs、unpkg)已经支持 CORS。
如果您使用不支持 CORS 的 CDN,SRI 验证将失败,资源将无法加载。在这种情况下,您需要切换到支持 CORS 的 CDN 或在您自己的域上托管资源。
我的内容会被发送到服务器吗?
不会。所有哈希计算都在您的浏览器中使用 Web Crypto API 进行。您的文件内容永远不会离开您的设备。
我可以在一个标签中使用多个算法吗?
可以,SRI 规范允许多个哈希值用空格分隔(例如 sha256-abc sha384-xyz)。浏览器将使用它支持的最强算法。此工具一次生成一个哈希值 — 如果需要,您可以手动组合它们。
使用多个哈希值可以提供与较旧浏览器的向后兼容性,同时确保较新的浏览器使用最强的可用算法。
还没有评论,快来发表第一条!