Geolocation API aus ungesicherten Ursprüngen in Chrome 50 entfernt

Paul Kinlan
Paul Kinlan

Die öffentliche Absicht von Chrome ist es, leistungsstarke Funktionen wie die Standortbestimmung für nicht sichere Ursprünge einzustellen. Wir hoffen, dass das auch in Zukunft so bleibt.

Ab Chrome 50 unterstützt Chrome die Ermittlung des Standorts des Nutzers über die HTML5 Geolocation API nicht mehr über Seiten, die über nicht sichere Verbindungen bereitgestellt werden. Das bedeutet, dass die Seite, die den Geolocation API-Aufruf durchführt, aus einem sicheren Kontext wie HTTPS bereitgestellt werden muss.

Dies ist ein wichtiges Problem, da es sich direkt auf alle Websites auswirkt, für die die Verwendung der API für die Standortbestimmung erforderlich ist und die nicht über HTTPS bereitgestellt wird. Wir sind jedoch der Meinung, dass diese Änderung für alle Nutzer im Web von Vorteil ist. Dieser Beitrag soll Ihnen helfen, die Begründungen zu verstehen und wie Sie vorgehen sollten.

Wann findet die Änderung statt?

Diese Änderung tritt ab Chrome 50 (20. April 2016, 12:00 Uhr PST) in Kraft.

Die Entwicklertools-Konsole von Chrome enthält seit Version 44 (veröffentlicht am 21. Juli 2015) Warnungen.
Es gibt mehrere öffentliche Ankündigungen, in denen die Begründung (und die Diskussion) für diese Änderung erläutert wird:

Es gibt eine Reihe anderer Quellen, die dies hervorheben: Mobiforge (26. Januar 2016), Wired (17. März 2016) und VentureBeat (13. April 2016).

Weshalb wird diese Änderung vorgenommen?

Der Standort ist sensibel. Zum Schutz der Standortdaten Ihrer Nutzer ist HTTPS erforderlich. Wenn der Standort des Nutzers in einem unsicheren Kontext verfügbar ist, können Angreifer im Netzwerk erkennen, wo sich der Nutzer befindet. Dies gefährdet den Datenschutz für Nutzer ernsthaft.

Wer ist davon betroffen?

Dies betrifft alle Seiten, die derzeit die Geolocation API von Seiten verwenden, die über HTTP (nicht sicher) bereitgestellt werden. Sie wirkt sich auch auf HTTPS-iFrames aus, die die Geolocation API verwenden, wenn sie in HTTP-Seiten eingebettet sind. Polyfills sind dann nicht mit einem freigegebenen, über HTTPS ausgelieferten Frame möglich.

Benötigt meine gesamte Webanwendung HTTPS?

Es ist keine Voraussetzung, dass die gesamte App über HTTPS bereitgestellt wird, um die Standortbestimmung nutzen zu können. Nur Seiten mit Standortbestimmung müssen in einem sicheren Kontext bereitgestellt werden. Sicherer Kontext ist derzeit alles, was auf oberster Ebene auf HTTPS oder localhost gehostet wird. Beispielsweise darf ein iFrame, der auf einen sicheren Ursprung verweist, aber auf einem ungesicherten Ursprung gehostet wird (http ://paul.kinlan.me/), die Geolocation API nicht aufrufen.

Wir empfehlen Ihnen dringend, zu HTTPS zu migrieren, da leistungsstarke neue und vorhandene Browserfunktionen sichere Ursprünge erfordern.

Wirkt sich das auf die lokale Entwicklung aus?

Dies ist nicht der Fall, da localhost in der Spezifikation als „potenziell sicher“ deklariert wurde. In unserem Fall funktionieren Anfragen zur Standortbestimmung, die auf oberster Ebene über localhost gestellt werden, weiterhin.

Kann ich während der Laufzeit feststellen, ob die Standortbestimmung blockiert wurde, weil sie sich nicht in einem sicheren Kontext befand

Ja. In der Spezifikation zur Standortbestimmung wird ein PositionError-Objekt definiert, das an den fehlerhaften Callback der Geolocation APIs übergeben wird. Das Objekt definiert die Attribute code und message.

Bei Fehlern aufgrund dieses Problems mit dem sicheren Kontext wird „code“ von 1 zurückgegeben. Dies ist ein Fehler vom Typ „Berechtigung verweigert“. Dieser Fehler kann auftreten, wenn ein Nutzer den Zugriff verweigert oder das System den Zugriff auf seine Standorte verweigert hat. Dies bedeutet, dass Sie die Meldung überprüfen müssen, um den genauen Grund zu finden.

Dies kann ziemlich anfällig sein, da es sich in Zukunft ändern kann. Ein starkes Signal für ein Problem mit nicht sicheren Inhalten ist jedoch, nach dem String „Nur sichere Ursprünge sind erlaubt“ zu suchen.

navigator.geolocation.getCurrentPosition(success => {
    /* Do some magic. */
}, failure => {
    if (failure.message.startsWith("Only secure origins are allowed")) {
    // Secure Origin issue.
    }
});

Denken Sie daran, dass Sie nicht einfach nur den Ursprung der Seite prüfen können, da sich Ihre Seite möglicherweise auf HTTPS befindet, aber in einem iFrame, der in einem unsicheren Kontext gehostet wird.

Ich muss die Standortbestimmung unbedingt nutzen. Was kann ich tun?

Wenn Sie die HTML5 Geolocation API verwenden möchten oder Ihre Website bereits die Geolocation API nutzt, migrieren Sie die Seiten, die Geolocation API-Aufrufe ausführen, zu HTTPS und stellen Sie sicher, dass sie in einem sicheren Kontext verwendet werden.

Es gibt eine Reihe von Fallback-Optionen, um den Standort eines Nutzers abzurufen, die von dieser Änderung nicht betroffen sind, z. B. die Google Maps Geolocation API, GeoIP (z. B. andere geobasierte Lösungen) und eine vom Nutzer eingegebene Postleitzahl. Wir empfehlen dringend, zu HTTPS zu wechseln, um dauerhaften Zugriff auf die Standortbestimmung sicherzustellen.