Konfiguration der Referrer-Richtlinie
Der Referrer-Policy
Header bietet detaillierte Kontrolle darüber, wie und wann Browser den Referer
Header übertragen.
Problem
Wenn ein Benutzer über einen Hyperlink zu einer Website navigiert oder wenn eine Website eine externe Ressource lädt, informieren Browser die Zielwebsite über die Herkunft der Anfragen durch 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.
Wenn beispielsweise eine Seite unter https://example.com/page.html
den folgenden HTML-Code enthält:
<img src="https://not.example.com/image.jpg" />
Wird der Browser eine Anfrage wie diese senden:
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 Risiko für die Privatsphäre dar.
Weitere Fälle könnten dazu führen, dass der Browser URLs überträgt, die nur für internen Gebrauch bestimmt sind und die nicht beabsichtigt waren, preiszugeben, 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 Versand des Referer
-Headers insgesamt zu unterbinden.
Die nützlichsten Direktiven für Referrer-Policy
sind nachfolgend in absteigender Striktheit aufgelistet. Wählen Sie die strengste, die es Ihrer Website noch ermöglicht, ordnungsgemäß zu funktionieren:
no-referrer
: DerReferer
-Header wird niemals gesendet.same-origin
: DerReferer
-Header wird nur bei Anfragen an denselben Ursprung gesendet.strict-origin
: DerReferer
-Header wird an alle Ursprünge gesendet, enthält jedoch nur die URL ohne den Pfad (z.B.https://example.com/
).strict-origin-when-cross-origin
: Der vollständigeReferer
-Header wird bei Anfragen an denselben Ursprung gesendet und nur die URL ohne den Pfad bei Anfragen an eine andere Herkunft. Dies ist der Standardwert.
Während es andere Referrer-Policy
-Direktiven gibt, schützen diese die Privatsphäre der Benutzer nicht so effektiv wie die oben aufgeführten Optionen. In neueren Versionen von Firefox und Safari verhalten sich "unsafe"-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 nutzen 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 zu anderen example.com
Ressourcen geladen oder verlinkt wird:
Referrer-Policy: same-origin
Den verkürzten Referrer bei Anfragen an eine andere Herkunft und den vollständigen Referrer bei Anfragen an denselben Ursprung 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
bei Browsern verwenden, die dies unterstützen:
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>