Secure contexts

Ein sicherer Kontext ist ein Window oder Worker, für den bestimmte Mindeststandards für 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, auf leistungsstarke APIs zuzugreifen, die das Opfer eines Angriffs weiter gefährden könnten.

Warum sollten einige Funktionen eingeschränkt werden?

Einige APIs im Web sind sehr leistungsfähig und geben einem Angreifer die Möglichkeit, Folgendes zu tun und mehr:

  • Eine Verletzung der Privatsphäre des Benutzers.
  • Niedrigstufigen Zugriff auf den Computer eines Benutzers.
  • Zugriff auf Daten wie Benutzeranmeldedaten.

Wann wird ein Kontext als sicher angesehen?

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

Zum Beispiel wird auch für ein über TLS geliefertes Dokument innerhalb eines <iframe> sein Kontext nicht als sicher 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 öffnet (mit oder ohne Angabe von noopener), die Tatsache, dass der Öffner unsicher war, keinen Einfluss darauf hat, ob das neue Fenster als sicher betrachtet wird. Das liegt daran, dass die Bestimmung, ob ein bestimmtes Dokument in einem sicheren Kontext vorliegt, nur auf der Betrachtung innerhalb des mit ihm verbundenen Top-Level-Browsing-Kontextes basiert — und nicht darauf, ob ein unsicherer Kontext zufällig für seine Erstellung verwendet wurde.

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

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

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

  • müssen über https:// oder wss:// URLs bereitgestellt werden
  • die Sicherheitseigenschaften des für die Bereitstellung der Ressource verwendeten Netzwerkanals dürfen nicht als veraltet angesehen werden

Feature-Erkennung

Seiten können die 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, welches 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