Sichere Kontexte

Ein sicherer Kontext ist ein Window oder Worker, für den bestimmte Mindestanforderungen an Authentifizierung und Vertraulichkeit erfüllt sind. Viele Web-APIs und Funktionen sind nur in einem sicheren Kontext zugänglich. Das Hauptziel sicherer Kontexte ist es, MITM-Angreifer daran zu hindern, Zugriff auf leistungsstarke APIs zu erhalten, die das Opfer eines Angriffs weiter gefährden könnten.

Warum sollten einige Funktionen eingeschränkt werden?

Einige APIs im Web sind sehr leistungsstark und bieten einem Angreifer die Möglichkeit, unter anderem Folgendes zu tun:

  • Die Privatsphäre eines Benutzers zu verletzen.
  • Niedrigen Zugriff auf den Computer eines Benutzers zu erhalten.
  • Zugriff auf Daten wie Benutzeranmeldedaten zu erhalten.

Wann wird ein Kontext als sicher angesehen?

Ein Kontext wird als sicher angesehen, wenn er bestimmte Mindestanforderungen an Authentifizierung und Vertraulichkeit erfüllt, die in der Secure Contexts Spezifikation definiert sind. Ein bestimmtes Dokument wird als sicherer Kontext betrachtet, wenn es das aktives Dokument eines top-level Browsing-Kontexts ist (im Wesentlichen ein enthaltendes Fenster oder Tab), das ein sicherer Kontext ist.

Zum Beispiel wird auch ein Dokument, das über TLS innerhalb eines <iframe> übermittelt wird, nicht als sicherer Kontext angesehen, wenn es einen Vorfahren hat, der nicht ebenfalls über TLS übermittelt wurde.

Es ist jedoch wichtig zu beachten, dass wenn ein unsicherer Kontext ein neues Fenster erstellt (mit oder ohne Angabe von noopener), der unsichere Ursprung keinen Einfluss darauf hat, ob das neue Fenster als sicher angesehen wird. Das liegt daran, dass die Bestimmung, ob ein bestimmtes Dokument in einem sicheren Kontext ist, nur darauf basiert, es innerhalb des top-level Browsing-Kontexts zu betrachten, mit dem es verknüpft ist – und nicht darauf, ob ein unsicherer Kontext zufällig zur Erstellung verwendet wurde.

Lokal ausgelieferte Ressourcen, wie diejenigen mit http://127.0.0.1 URLs, http://localhost und http://*.localhost URLs (z.B. http://dev.whatever.localhost/), und file:// URLs werden auch als sicher geliefert angesehen.

Hinweis: Firefox 84 und höher unterstützen http://localhost und http://*.localhost URLs als vertrauenswürdige Ursprünge (frühere Versionen taten dies nicht, da localhost nicht garantiert auf eine lokale/Loopback-Adresse abbildete).

Ressourcen, die nicht lokal sind, müssen um als sicher angesehen zu werden, die folgenden Kriterien erfüllen:

  • müssen über https:// oder wss:// URLs bereitgestellt werden
  • die Sicherheitseigenschaften des Netzwerkkanals, der zur Bereitstellung der Ressource verwendet wird, dürfen nicht als veraltet gelten

Funktionsprüfung

Seiten können die Funktionsprüfung verwenden, um zu überprüfen, ob sie sich in einem sicheren Kontext befinden oder nicht, indem sie das Window.isSecureContext oder WorkerGlobalScope.isSecureContext Boolean verwenden, das im globalen Scope verfügbar ist.

js
if (window.isSecureContext) {
  // Page is a secure context so service workers are now available
  navigator.serviceWorker.register("/offline-worker.js").then(() => {
    // …
  });
}

Spezifikationen

Specification
Secure Contexts

Siehe auch