Firefox中SHA384哈希与子资源integrity属性不匹配的CSP问题求解决方案
Firefox 112.0.2中SHA384哈希SRI验证失败的解决办法
问题背景
Chrome、Chromium内核的Edge及Opera中,JavaScript文件example.js的SHA384哈希可正常通过Subresource Integrity(SRI)验证,但Firefox 112.0.2会抛出控制台错误:
integrity属性中的所有"sha384"哈希均与子资源内容不匹配
目前Mozilla官方暂未推出修复方案,该问题会限制Firefox在采用CSP Level 2及Level 3安全特性的站点中的兼容性。
可行解决办法
替换哈希算法
暂时改用SHA256或SHA512哈希,Firefox对这两种算法的SRI验证兼容性更稳定。生成对应哈希后更新script标签:<script src="example.js" integrity="sha256-[生成的哈希值]" crossorigin="anonymous"></script>校验文件一致性
确认Firefox请求到的example.js与其他浏览器获取的文件完全一致:- 清除Firefox缓存后重新加载页面,排除缓存导致的内容差异
- 通过开发者工具Network面板查看文件内容,与本地文件做字节级对比,避免CDN或代理篡改
添加多哈希兜底
在integrity属性中同时声明SHA384及另一种兼容的哈希算法,让Firefox能匹配到可用的验证值:<script src="example.js" integrity="sha384-[原哈希值] sha256-[新增哈希值]" crossorigin="anonymous"></script>临时降级浏览器版本
若业务对兼容性要求较高,可临时降级到验证正常的Firefox版本(如111.x系列),等待官方修复后再升级
内容的提问来源于stack exchange,提问作者Goemon Code
相关产品推荐
相关产品推荐

