リソース URL
非標準: この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。
resource:
というスキームのプレフィックスが付いたリソース URL は、Firefox と Firefox のブラウザー拡張機能によってリソースを内部的に読み込むために使用されますが、情報の一部はブラウザーが接続するサイトでも利用できます。
構文
リソース URL は、接頭辞 (resource:
) と読み込むするリソースを指す URL の 2 つの部分で構成されます。
resource://<path>
例
resource://gre/res/svg.css
リソース URL ('->') に矢印がある場合は、最初のファイルが次のファイルにロードされたことを意味します。
resource://<File-loader> -> <File-loaded>
より一般的な詳細については、ウェブ上のリソースの識別を参照してください。
この記事では、組み込みのリソースを指すために Firefox が内部的に使用するリソース URI に焦点を当てます。
脅威
resource:
URL によって共有される情報の一部はウェブサイトで利用できるため、ウェブページは内部スクリプトを実行し、デフォルトの設定を含む Firefox の内部リソースを調べることができます。
たとえば、Browserleaks のスクリプトは、サイトで実行されている簡単なスクリプトでクエリーが実行されたときに Firefox が表示する内容を強調表示します(コードは https://browserleaks.com/resource-urls#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 のみ対応
関連情報
- ウェブ上のリソースの識別
- URL とは何か
- IANA list of URI schemes (
resource:
is covered here)