リソース URL

非標準: この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

resource: というスキームのプレフィックスが付いたリソース URL は、Firefox と Firefox のブラウザー拡張機能によってリソースを内部的に読み込むために使用されますが、情報の一部はブラウザーが接続するサイトでも利用できます。

構文

リソース URL は、接頭辞 (resource:) とロードするリソースを指す URL の 2 つの部分で構成されます。

resource://<url>

resource://gre/res/svg.css

リソース URL ('->') に矢印がある場合は、最初のファイルが次のファイルにロードされたことを意味します。

resource://<File-loader> -> <File-loaded>

より一般的な詳細については、ウェブ上のリソースの識別を参照してください。

この記事では、組み込みのリソースを指すために Firefox が内部的に使用するリソース URI に焦点を当てます。

脅威

resource: URL によって共有される情報の一部はウェブサイトで利用できるため、ウェブページは内部スクリプトを実行し、デフォルトの設定を含む Firefox の内部リソースを調べることができます。

たとえば、Browserleaks のスクリプトは、サイトで実行されている簡単なスクリプトでクエリが実行されたときに Firefox が表示する内容を強調表示します (コードは https://browserleaks.com/firefox#more にあります)。

ファイル firefox.js は、プリファレンス名と値を pref() 関数に渡します。 例えば、

http://searchfox.org/mozilla-central/rev/48ea452803907f2575d81021e8678634e8067fc2/browser/app/profile/firefox.js#575

ウェブサイトではこの pref() 関数をオーバーライドし、スクリプトresource:///defaults/preferences/firefox.js を使用して、 Firefox のデフォルト設定を簡単に収集できます。

さらに、プラットフォームやロケールなどのビルド構成によっては、ウェブサイトがこの情報を使用して個々のユーザーを識別できるという意味で、いくつかのデフォルト設定値が異なります。

解決方法

この問題を解決するために、 Mozilla は Firefox バグ 863246 のリソースを読み込む動作を変更しました。これは Firefox 57 (Quantum) で登場しました。

過去には、ウェブコンテンツは、 Firefox の内部リソースだけでなく、拡張機能の資産も含め、URI が必要とするあらゆるリソースにアクセスすることができました。 現在、この動作はデフォルトでは禁止されています。

しかし、特定の状況下で Firefox がウェブコンテンツにリソースを読み込む必要があります。 たとえば、ビュー・ソース・ページ (ビュー・ソースまたはビュー選択ソース) を開くと、 resource: URI を介して viewsource.css が必要です。ウェブコンテンツに公開する必要があるリソースは、 resource://content-accessible/という名前の新しい場所に移動されました。これは隔離されており、重要ではないリソースのみが含まれています。 このようにして、重要なリソースを公開し、ほとんどの脅威を排除できます。

メモ: ウェブと拡張機能の開発者がリソース URL をもう使用しようとしないことをお勧めします。彼らの使い方はうまくいきませんでした。そしてほとんどの使用法はこれ以上動作しません。

仕様

resource: はどの仕様書にも定義されていません。

ブラウザーの対応

resource: は Firefox のみ対応

関連情報