5

クライアントは、Web サイトのすべての CSS および JS アセットで SRI を使用したいと考えていますが、Firefox で非常に奇妙な問題に遭遇しました。彼らのサーバーは、HTML コンテンツを提供する apache2 インスタンスです。*CORS は、任意の ( ) オリジンに対して、仮想ホスト全体で有効になっています。キャッシュや CDN が配置されていません。

問題の2つのファイルは

  • 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 (/Nightly) では動作しません。

Firefox は、SHA512 がリソースと一致しないと言って、CSS だけを嫌います。何らかの理由でJSファイルを正常に処理します。

上記のツールによって生成されたハッシュが実際に正しいことを (OpenSSL を使用して) 確認し、Firefox を除くほぼすべてのブラウザーで機能するという事実から考えさせられました。

そこで、Mozilla 独自の SRI ツールsrihash.orgを使用してリソースをハッシュしようとしました。これは、Mozilla が SRI に関するブログ投稿から推奨しているツールです。

今は少し奇妙です。

  • CSS ファイルの場合、srihash.org はまったく異なるハッシュを生成します。
  • JS ファイルの場合、ハッシュは両方のジェネレーターで同じであり、私のオフライン ハッシュと OpenSSL を一致させます。

しかし、CSS リンクを Mozilla が生成したリンクに置き換えると、次のようになります。

  • Firefoxで動作します
  • ハッシュが一致しないため、他の場所で機能しません

質問

これは、Firefox の SRI 実装に何らかの問題があると思われます。実装に関連する議論はこちらにありますが、Firefox でリソースが異なる理由は示されていません。しかし、私は厳密には Web 開発者ではないので、ブラウザーごとに SRI ハッシュが異なる (文書化された) 理由はありますか?

正確なサーバー/リソースを開示することはできません。これは一般的な質問です。客観的な経験や、SRI 実装の違いを文書化した認定ソースへの参照がある場合は、回答してください。

4

0 に答える 0