客户希望在其网站上的所有CSS和JS资产上使用SRI,但它们遇到了一个非常奇怪的问题。他们的服务器是一个apache2实例,提供HTML内容。对于任何(*
)源,整个虚拟主机都启用了CORS。没有缓存或CDN。
有问题的两个文件是
company.min.css
和company.min.js
要生成SRI哈希,最初使用SRI Hash Generator。这个输出有多种算法,如下所示:
<script src="https://example.com/static/company.min.js" integrity="sha256-aKuSpMxn15zqbFa0u0FVA7mAFOSVwIwU4gA3U7AZf5Y= sha384-WDAg+qGBjbEyE52SdQ5UHdTObTY+jYTL63m9Oy2IJcGZR8AFn0t9JNN7qdut6DBk sha512-bxmUFj1FVOVV74+zIYau/HSUcLq9cuneBKoMJyW9dAz//yKFi8eRhyyIezF++2vbGO7cR6Pzm1l9rvnPcrvIrg==" crossorigin="anonymous"></script>
类似于CSS文件。它们被插入到HTML中,并且该站点在几个不同的浏览器中进行了测试,结果如下:
Firefox不喜欢CSS,说SHA512与资源不匹配。无论出于何种原因,它都可以处理JS文件。
我确认(使用OpenSSL)上述工具生成的哈希确实是正确的,并且除了Firefox之外几乎所有浏览器都可以使用它这一事实让我思考。
所以我尝试使用Mozilla自己的SRI工具srihash.org来对资源进行哈希处理,这是Mozilla在SRI上blog post推荐的。
现在它有点奇怪了。
但是,如果我用Mozilla生成的链接替换CSS链接,结果就是这样:
问题
我怀疑这是Firefox中的一些问题&#39; SRI实施。有关实施的相关讨论是here,但它没有说明Firefox中资源不同的任何原因。但我并不是一个严格意义上的Web开发人员,因此在不同的浏览器中是否有任何可能(记录)的原因导致不同的SRI哈希?
我无法透露确切的服务器/资源。这是一般性问题,因此,如果您有任何客观经验或对授权来源的参考,记录SRI实施的差异,请回答。