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://
oderwss://
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.
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
- Plattformfunktionen, die auf sichere Kontexte beschränkt sind — eine Liste der nur in sicheren Kontexten verfügbaren Funktionen
Window.isSecureContext
undWorkerGlobalScope.isSecureContext
- https://permission.site — Eine Seite, die es Ihnen ermöglicht zu überprüfen, welche API-Berechtigungsprüfungen Ihr Browser über HTTP und HTTPS anwendet
- Strict-Transport-Security HTTP-Header