Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Secure Contexts

安全であるために必要最小限な要件をブラウザが満たしている場合、そのブラウザは 安全なコンテキスト(Secure Context) の中にいると考えます。ブラウザは安全なコンテキストの確認を行うことで、ユーザの通信に安全性が確保されている場合のみ利用を許可するべき API を公開できます。

アクセスを制限するべき機能がある理由

Web の API には強力なものもあり、攻撃者に対して以下のような(それよりも多くの)能力を与えてしまう可能性があります。

  • ユーザのプライバシーを侵害する
  • ユーザのコンピュータに対して低レイヤーのアクセス権限を得る
  • ユーザの機密情報に対するアクセス権限を得る

コンテキストが安全とみなされる条件

コンテキストが安全とみなされるのは、安全な通信路かローカル環境から送信される場合です。そのコンテキストがフレームの内側ではなく、かつトップレベルのブラウザコンテキストでもない場合、安全なコンテキストであるためには、自分の親が安全なコンテキストでなければなりません。

https://localhostfile:// のようなパスを持つローカルファイルは安全とみなされます。

ローカルに存在しないコンテキストが安全であるためには、 https://wss:// のスキームで、かつ廃止されることがないようなプロトコルで送信されなければなりません。

機能の判別

グローバルスコープで利用できる isSecureContext の真偽値を用いることで、そのページ自身が安全なコンテキストの中にいるかどうか確かめることができます。すなわち、アクセスを安全なコンテキストのみに制限している API を利用できるか判別することができます。

if (window.isSecureContext) {
  // Service Worker が実行されているので、このページは安全なコンテキストです
  navigator.serviceWorker.register("/offline-worker.js").then(function () {
    ...
  });
}

安全なコンテキストを必要とする API

草案として提案されている API

ブラウザ

ブラウザのなかには Chrome issues deprecation warnings に書かれているように、特定の API を安全なコンテキストのみで利用可能とするかもしれません。このような API には以下が例として挙げられます。

仕様

仕様書 策定状況 備考
Secure Contexts 草案 Editor’s Draft

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート (有) 49 (49) ? ? ?
機能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本サポート 未サポート (有) 49.0 (49) ? ? ? (有)

関連情報

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: hashedhyphen
 最終更新者: hashedhyphen,