Referrer-Policy
Verwendung
Wenn ein Browser einem Link folgt oder eine Subressource lädt, sendet er normalerweise einen Referer-Header mit der URL der Ausgangsseite. Der Referrer-Policy-Header gibt Site-Betreibern die Kontrolle darüber, welcher Teil der URL weitergegeben wird und ob der Referer-Header überhaupt gesendet wird.
Datenschutzsensible Sites entfernen Referrer-Informationen, um zu verhindern, dass Query-Parameter, Pfade oder Details zur Herkunft an Dritte gelangen. Die Richtlinie gilt für Navigationen, Subressourcen-Anfragen und Prefetch-Vorgänge, die von der Seite ausgelöst werden.
Eine kommagetrennte Liste von Richtlinien dient als Fallback-Kette. Der Browser wählt die letzte Richtlinie der Liste aus, die er unterstützt, was vorwärtskompatible Deployments unkompliziert macht.
Festlegen der Richtlinie
Es gibt drei Mechanismen, um die Referrer-Richtlinie zu setzen:
Attribute auf Elementebene überschreiben das Meta-Tag auf Seitenebene, welches wiederum den HTTP-Header überschreibt. Der HTTP-Header ist die zuverlässigste Methode, weil die Richtlinie wirksam wird, bevor überhaupt HTML geparst wird.
no-referrer
Die Direktive no-referrer unterdrückt den Referer-Header vollständig. Mit keiner von der Seite ausgehenden Anfrage werden URL-Informationen gesendet.
no-referrer-when-downgrade
Die Direktive no-referrer-when-downgrade sendet bei Anfragen mit gleichem Protokoll die vollständige URL (Origin, Pfad und Query-String). Wenn die Anfrage die Sicherheit herabstuft (HTTPS zu HTTP), wird der Referer-Header weggelassen.
origin
Die Direktive origin sendet nur den Origin-Teil der URL (Schema, Host und Port). Pfad und Query-String werden bei jeder Anfrage entfernt.
origin-when-cross-origin
Die Direktive origin-when-cross-origin sendet bei Same-Origin-Anfragen die vollständige URL. Bei Cross-Origin-Anfragen oder Protokoll-Herabstufungen wird nur der Origin gesendet.
same-origin
Die Direktive same-origin sendet bei Same-Origin-Anfragen die vollständige URL und lässt den Referer-Header bei Cross-Origin-Anfragen vollständig weg.
strict-origin
Die Direktive strict-origin sendet nur den Origin, und zwar nur dann, wenn das Sicherheitsniveau des Protokolls gleich bleibt oder sich verbessert (HTTPS zu HTTPS oder HTTP zu HTTP). Eine Protokoll-Herabstufung unterdrückt den Header.
strict-origin-when-cross-origin
Die Direktive strict-origin-when-cross-origin sendet bei Same-Origin-Anfragen die vollständige URL, sendet bei Cross-Origin-Anfragen auf demselben Sicherheitsniveau nur den Origin und lässt den Header bei einer Protokoll-Herabstufung weg. Dies ist in modernen Browsern die Standardrichtlinie, wenn keine Referrer-Policy gesetzt ist.
unsafe-url
Die Direktive unsafe-url sendet mit jeder Anfrage die vollständige URL (Origin, Pfad und Query-String), unabhängig von Ziel oder Protokoll. Damit werden die meisten Informationen preisgegeben, was im Produktivbetrieb nur selten angemessen ist.
Beispiel
Eine strenge Standardrichtlinie, die bei Cross-Origin-Navigationen nur den Origin sendet:
Referrer-Policy: strict-origin-when-cross-origin
Eine datenschutzorientierte Konfiguration, die sämtliche Referrer-Daten unterdrückt:
Referrer-Policy: no-referrer
Eine Fallback-Kette, bei der der Browser strict-origin wählt, sofern unterstützt, und andernfalls auf no-referrer zurückfällt:
Referrer-Policy: no-referrer, strict-origin