Konfiguration der Referrer-Richtlinie
Der Referrer-Policy Header bietet eine feindifferenzierte Kontrolle darüber, wie und wann Browser den Referer Header übertragen.
Problem
Wenn ein Benutzer über einen Hyperlink zu einer Seite navigiert oder eine Website eine externe Ressource lädt, informieren Browser die Zielseite über den Ursprung der Anfragen mittels des HTTP-Referer (sic) Headers. Obwohl dies aus verschiedenen Gründen 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 kam. Selbst diese kleine Menge an Informationen stellt ein Privatsphäre-Risiko dar.
In anderen Fällen könnte der Browser URLs übermitteln, die nur für den internen Gebrauch bestimmt sind und die er möglicherweise nicht preisgeben wollte, oder URL-Parameter, die sensible Informationen enthalten.
Lösung
Verwenden Sie Referrer-Policy, um die im Referer Header verfügbaren Informationen zu begrenzen oder den Referer Header insgesamt nicht zu senden.
Die nützlichsten Direktiven, die für Referrer-Policy verfügbar sind, sind unten in absteigender Reihenfolge der Strenge aufgeführt. Wählen Sie die strengste aus, die dennoch das ordnungsgemäße Funktionieren Ihrer Seite ermöglicht:
no-referrer: Sendet niemals denRefererHeader.same-origin: Sendet denRefererHeader, aber nur bei Anfragen gleichen Ursprungs.strict-origin: Sendet denRefererHeader an alle Ursprünge, enthält jedoch nur die URL ohne den Pfad (z.B.https://example.com/).strict-origin-when-cross-origin: Sendet den vollständigenRefererHeader bei Anfragen gleichen Ursprungs und nur die URL ohne den Pfad bei anfragen mit unterschiedlichen Ursprüngen. Dies ist der Standardwert.
Obwohl es andere Direktiven für Referrer-Policy gibt, schützen diese nicht die Privatsphäre der Nutzer oder begrenzen die Offenlegung so wirksam wie die oben aufgeführten Optionen. In neueren 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.
Wenn Sie den Referrer-Policy Header nicht verwenden können, können Sie alternativ seitenweite Richtlinien mit einem <meta http-equiv="Referrer-Policy" content="…"> Element 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 festlegen.
Beispiele
Auf example.com den Referer Header nur senden, wenn Ressourcen von example.com geladen oder verlinkt werden:
Referrer-Policy: same-origin
Den verkürzten Referrer bei Anfragen mit unterschiedlichen Ursprüngen und den vollständigen Referrer bei Anfragen gleichen Ursprungs senden:
Referrer-Policy: strict-origin-when-cross-origin
Referrer für Browser deaktivieren, die strict-origin-when-cross-origin nicht unterstützen; strict-origin-when-cross-origin für Browser verwenden, die dies tun:
Referrer-Policy: no-referrer, strict-origin-when-cross-origin
Dasselbe tun, 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 nur no-referrer festlegen:
<a href="https://example.org/" referrerpolicy="no-referrer"> My link </a>