不同SRI的可能原因导致不同的浏览器?

时间:2016-05-10 14:36:58

标签: javascript css firefox subresource-integrity

客户希望在其网站上的所有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中,并且该站点在几个不同的浏览器中进行了测试,结果如下:

    Chrome(/ Canary),Opera,Edge甚至IE 中的
  • 工作
  • 并不在Firefox中工作(/每晚)。

Firefox不喜欢CSS,说SHA512与资源不匹配。无论出于何种原因,它都可以处理JS文件。

我确认(使用OpenSSL)上述工具生成的哈希确实是正确的,并且除了Firefox之外几乎所有浏览器都可以使用它这一事实让我思考。

所以我尝试使用Mozilla自己的SRI工具srihash.org来对资源进行哈希处理,这是Mozilla在SRI上blog post推荐的。

现在它有点奇怪了。

  • 对于CSS文件,srihash.org生成完全不同的哈希。
  • 对于JS文件,两个生成器的哈希值相同,并使用OpenSSL匹配我的离线哈希值。

但是,如果我用Mozilla生成的链接替换CSS链接,结果就是这样:

    Firefox中的
  • 工作
  • 其他,因为哈希不匹配

问题

怀疑这是Firefox中的一些问题&#39; SRI实施。有关实施的相关讨论是here,但它没有说明Firefox中资源不同的任何原因。但我并不是一个严格意义上的Web开发人员,因此在不同的浏览器中是否有任何可能(记录)的原因导致不同的SRI哈希?

我无法透露确切的服务器/资源。这是一般性问题,因此,如果您有任何客观经验或对授权来源的参考,记录SRI实施的差异,请回答。

0 个答案:

没有答案