Sichere Kontexte

Ein sicherer Kontext ist ein Window oder Worker, bei dem bestimmte Mindeststandards in Bezug auf Authentifizierung und Vertraulichkeit erfüllt werden. Viele Web-APIs und -Funktionen sind nur in einem sicheren Kontext zugänglich. Das hauptsächliche Ziel sicherer Kontexte ist es, MITM-Angreifer daran zu hindern, auf leistungsstarke APIs zuzugreifen, die das Opfer eines Angriffs weiter gefährden könnten.

Warum sollten einige Funktionen eingeschränkt sein?

Einige APIs im Web sind sehr mächtig und ermöglichen es einem Angreifer, unter anderem Folgendes zu tun:

  • Die Privatsphäre eines Nutzers zu verletzen.
  • Niedrigstufigen Zugriff auf den Computer eines Nutzers zu erlangen.
  • Zugriff auf Daten wie Nutzeranmeldedaten zu erhalten.

Wann wird ein Kontext als sicher angesehen?

Ein Kontext wird als sicher angesehen, wenn er bestimmte Mindeststandards in Bezug auf Authentifizierung und Vertraulichkeit erfüllt, wie sie in der Secure Contexts-Spezifikation definiert sind. Ein bestimmtes Dokument gilt als sicherer Kontext, wenn es das aktive Dokument eines Top-Level-Browsing-Kontextes (im Wesentlichen ein enthaltendes Fenster oder Tab) ist, das ein sicherer Kontext ist.

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

Es ist jedoch wichtig zu beachten, dass, wenn ein unsicherer Kontext ein neues Fenster erstellt (mit oder ohne die Angabe von noopener), der Umstand, dass der Eröffner unsicher war, 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, ob es im zugehörigen top-level-Browsing-Kontext sicher ist — und nicht darauf, ob es von einem unsicheren Kontext erstellt wurde.

Lokal gelieferte Ressourcen wie solche mit http://127.0.0.1 URLs, http://localhost und http://*.localhost URLs (z.B. http://dev.whatever.localhost/) und file:// URLs gelten ebenfalls als sicher geliefert.

Hinweis: Firefox 84 und später unterstützen http://localhost und http://*.localhost URLs als vertrauenswürdige Ursprünge (frühere Versionen taten dies nicht, weil localhost nicht garantiert auf eine lokale/Loopback-Adresse verweist).

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

  • Sie 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 angesehen werden

Feature-Erkennung

Seiten können Feature-Erkennung 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 Gültigkeitsbereich 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