Konfiguration der Referrer-Richtlinie
Der Referrer-Policy
-Header ermöglicht eine feingranulare Kontrolle darüber, wie und wann Browser den Referer
-Header übermitteln.
Problem
Wenn ein Benutzer über einen Hyperlink zu einer Seite navigiert oder wenn eine Webseite eine externe Ressource lädt, informieren die Browser die Zielseite über die Herkunft der Anfragen über den HTTP-Referer
-Header. Obwohl dies für verschiedene Zwecke nützlich sein kann, kann es auch ein Risiko für die Privatsphäre der Benutzer darstellen.
Zum Beispiel, wenn eine Seite unter https://example.com/page.html
den folgenden HTML-Code enthält:
<img src="https://not.example.com/image.jpg" />
sendet der Browser eine Anfrage wie diese:
GET /image.jpg HTTP/1.1
Host: not.example.com
Referer: https://example.com/page.html
not.example.com
weiß nun, woher die Anfrage stammt. Selbst diese geringe Menge an Informationen stellt ein Datenschutzrisiko dar.
In anderen Fällen könnte es dazu kommen, dass der Browser nur für den internen Gebrauch bestimmte URLs übermittelt, die er möglicherweise nicht offenlegen wollte, oder URL-Parameter, die sensible Informationen enthalten.
Lösung
Verwenden Sie Referrer-Policy
, um die im Referer
-Header enthaltenen Informationen zu begrenzen oder um das Senden des Referer
-Headers vollständig zu unterbinden.
Die nützlichsten verfügbaren Direktiven für Referrer-Policy
sind unten in abnehmender Reihenfolge der Strenge aufgeführt. Wählen Sie die strengste aus, die trotzdem die ordnungsgemäße Funktion Ihrer Seite ermöglicht:
no-referrer
: DerReferer
-Header wird niemals gesendet.same-origin
: DerReferer
-Header wird nur bei Anfragen derselben Herkunft gesendet.strict-origin
: DerReferer
-Header wird an alle Ursprünge gesendet, enthält jedoch nur die URL ohne Pfad (z.B.https://example.com/
).strict-origin-when-cross-origin
: Der vollständigeReferer
-Header wird bei Anfragen derselben Herkunft gesendet und nur die URL ohne Pfad bei anfragenübergreifenden Anfragen. Dies ist der Standardwert.
Obwohl es andere Referrer-Policy
-Direktiven gibt, schützen sie die Privatsphäre des Nutzers nicht so effektiv oder beschränken die Offenlegung nicht so stark wie die oben genannten Optionen. In den neuesten Versionen von Firefox und Safari verhalten sich "unsichere" Direktiven (no-referrer-when-downgrade
, origin-when-cross-origin
und unsafe-url
) wie strict-origin-when-cross-origin
.
Falls Sie den Referrer-Policy
-Header nicht verwenden können, können Sie alternativ seitenweite Richtlinien mithilfe eines <meta http-equiv="Referrer-Policy" content="…">
-Elements festlegen. Dies sollte das erste <meta>
-Element sein, das im Dokument <head>
erscheint. Sie können auch Richtlinien für einzelne Elemente mit dem referrerpolicy
-HTML-Attribut und für einzelne fetch-Anfragen mit der Request.referrerPolicy
-Eigenschaft setzen.
Beispiele
Auf example.com
, senden Sie den Referer
-Header nur beim Laden oder Verlinken zu anderen example.com
-Ressourcen:
Referrer-Policy: same-origin
Senden Sie den verkürzten Referrer bei anfragenübergreifenden Anfragen und den vollständigen Referrer bei Anfragen derselben Herkunft:
Referrer-Policy: strict-origin-when-cross-origin
Deaktivieren Sie Referrer für Browser, die strict-origin-when-cross-origin
nicht unterstützen; verwenden Sie strict-origin-when-cross-origin
für Browser, die dies tun:
Referrer-Policy: no-referrer, strict-origin-when-cross-origin
Tun Sie dasselbe, aber mit einem <meta>
-Element:
<meta
http-equiv="Referrer-Policy"
content="no-referrer, strict-origin-when-cross-origin" />
Das referrerpolicy
-Attribut unterstützt keine Mehrfachwerte, daher setzen Sie nur no-referrer
:
<a href="https://example.org/" referrerpolicy="no-referrer"> My link </a>