Web 安全配置

SRI 哈希生成器按最终资源的字节生成完整性值

粘贴内容或选择一个文件;资源地址只写入标签,不用于抓取。

SRI 哈希生成器

资源内容

文本按 UTF-8 编码;文件保留原始字节。

SRI 结果

内容仅在浏览器本地处理;资源地址不会被访问。

参数

单文件不超过 20 MiB,文本不超过 1,000,000 个 UTF-16 单元。

输入文本或选择文件。

SRI 哈希生成器适合在引用第三方脚本或样式表前,先把审核过的资源版本固定下来。仅写版本号不能保证浏览器随后拿到的字节没有改变。

普通 Hash 工具往往给出十六进制,而子资源完整性需要 Base64 摘要和算法前缀。尽量选择最终部署文件;粘贴文本可能因换行符不同而得到另一结果。

为什么用 SRI 哈希生成器

把本地输入、已有值和实际要粘贴的标签放在同一次核对里。

从文件原始字节出发

SRI 哈希生成器直接读取选中本地文件的原始字节,保留 BOM 与换行。地址字段不抓取 CDN 内容,避免把未经审查的远程版本误当作可信输入。

一个本地文件进入摘要和脚本标签,独立的地址字段没有指向网络的箭头。

核对已有完整性值

输入同算法的一枚已有 token,就能看到一致或不一致的结果。输入、算法或地址一改,旧结果立即过期,复制与下载同步禁用。

文件摘要与已有值形成两条对照路径,分别出现一致标记和不一致标记。

避开字节和标签的常见误区

01

选择最终文件

文件模式按字节计算;文本模式先编码为 UTF-8。多一个结尾换行也会让 integrity 值改变。

02

确认算法与旧值

默认选 SHA-384。已有值只接受一枚同算法的 Base64 token;改动算法后需重新生成。

03

检查要复制的内容

没有地址仍可复制 integrity 属性;填写地址后再核对 script 或 stylesheet 标签。跨域使用还要检查服务器的 CORS 响应。

从资源内容到可粘贴的标记

规范格式输出

SRI Hash 在线生成器常见的目标是 sha384-Base64。这里也支持 SHA-256 与 SHA-512,不把普通十六进制摘要伪装成 SRI。

独立校验已有值

把已有 integrity 属性里的 token 单独贴入校验框,可比较选中输入的实际字节;合法但不同的值显示不一致。

脚本与样式标签

可选 script 或 link,并对资源地址进行 HTML 属性转义。完整标签带 crossorigin="anonymous",但不会替你验证 CORS。

取消与过期保护

文件在 Worker 中计算。取消、改输入或调参数都会使旧结果失效,避免把另一版本的哈希复制到新页面。

计算范围与发布边界

地址不会被访问
本页不下载 URL、不检查 CDN 当前响应。输出标签只说明你所选本地内容的摘要,不能证明线上资源与它相同。
只校验一枚 token
多算法混排的 integrity 值由浏览器按最强算法处理,不能用“任意一个匹配”替代。此处故意拒绝多枚 token。
必须核对最终版本
构建、重新压缩或 CDN 改写会让文件字节变化。上线前对实际交付版本重新计算;更新资源后也须同步更新属性。
明确容量与能力限制
单文件不超过 20 MiB,文本不超过 1,000,000 个 UTF-16 单元。不做目录批量、MD5、SHA-1、签名验证或漏洞扫描。

SRI 哈希生成器常见问题

SRI 与 HTTPS 的保护范围有什么不同?

HTTPS 保护传输连接;SRI 哈希生成器提供预期字节的摘要,浏览器再拿实际文件与它比较。两者解决的问题不同,摘要也不能证明代码本身安全。

如何生成可写进 integrity 属性的哈希值?

选择最终 JS 或 CSS 文件,运行后复制 sha384- 等格式的值或完整 integrity 属性。页面按摘要原始字节做 Base64 编码,不是把十六进制文本再编码。

跨域加载时为什么要加 crossorigin 属性?

跨域资源需要 CORS 方式加载且服务器允许该响应。生成的标签含 crossorigin="anonymous";本工具不会访问地址,因此无法替你测试服务器配置。

普通 SHA-384 的十六进制结果能直接用于 SRI 吗?

不能。一般 SHA-384 工具显示的是十六进制;SRI 要求 sha384- 前缀加摘要字节的 Base64。两种可见字符串不可互换。

生成的 SRI 结果能否不核对文件就用于正式环境?

不能只看本页结果。应拿最终实际部署的文件重算,再检查浏览器是否能够取得对应资源并通过 CORS;远程文件变化后旧值会失效。

还有疑问?

用 SRI 哈希生成器核对下一个资源

回到 SRI 哈希生成器,选择即将交付的最终文件,核对新值与 HTML 标签后再发布。