Konfiguration der Referrer-Policy
Der Referrer-Policy
Header bietet detaillierte Kontrolle darüber, wie und wann Browser den Referer
Header übermitteln.
Problem
Wenn ein Nutzer über einen Hyperlink zu einer Website navigiert oder wenn eine Website eine externe Ressource lädt, informieren Browser die Zielseite über die Herkunft der Anfragen über den HTTP Referer
(sic) Header. Obwohl dies aus verschiedenen Gründen nützlich sein kann, kann es auch ein Risiko für die Privatsphäre der Nutzer darstellen.
Zum Beispiel, wenn eine Seite unter https://example.com/page.html
folgendes HTML enthält:
<img src="https://not.example.com/image.jpg" />
Der Browser sendet 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.
Andere Fälle könnten dazu führen, dass der Browser nur intern genutzte 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 verfügbaren Informationen zu begrenzen oder um zu verhindern, dass der Referer
Header überhaupt gesendet wird.
Die nützlichsten für Referrer-Policy
verfügbaren Direktiven sind nachfolgend in abnehmender Strenge aufgeführt. Wählen Sie die strengste, die die Funktionsfähigkeit Ihrer Website dennoch gewährleistet:
no-referrer
: Senden Sie denReferer
Header niemals.same-origin
: Senden Sie denReferer
Header, aber nur bei Anfragen zur gleichen Herkunft.strict-origin
: Senden Sie denReferer
Header an alle Ursprünge, aber nur die URL ohne den Pfad (z.B.https://example.com/
).strict-origin-when-cross-origin
: Senden Sie den komplettenReferer
Header bei Anfragen zur gleichen Herkunft und nur die URL ohne den Pfad bei Anfragen zu anderen Ursprüngen. Dies ist der Standardwert.
Es gibt zwar andere Referrer-Policy
Direktiven, jedoch schützen sie die Privatsphäre der Nutzer nicht so effektiv oder begrenzen die Exposition nicht so wirkungsvoll 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 mithilfe des referrerpolicy
HTML-Attributs festlegen und für einzelne fetch Anfragen die Request.referrerPolicy
Eigenschaft verwenden.
Beispiele
Auf example.com
den Referer
Header nur senden, wenn auf andere example.com
Ressourcen geladen oder verlinkt wird:
Referrer-Policy: same-origin
Den verkürzten Referrer bei Anfragen zu anderen Ursprüngen und den vollständigen Referrer bei Anfragen zur gleichen Herkunft 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 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
setzen:
<a href="https://example.org/" referrerpolicy="no-referrer"> My link </a>