+49 (0) 9491 / 742 988 50

Referrer-Policy Header richtig konfigurieren

Was macht der Referrer-Policy Header?

Über den Referrer-Policy Header kann kontrolliert werden, welche Informationen über den Referrer Header geteilt werden.

Was können die Auswirkungen eines nicht gesetzten Referrer-Policy Headers sein?

Ist dieser Header nicht (oder auf den falschen Wert) gesetzt, dann kommt es möglicherweise zu einem Abfluss an sensiblen Informationen.

Dieser Fall tritt dann ein, wenn ein User sich auf einer Seite befindet, in deren URL sensible Informationen enthalten sind (z.B. example.com/sensibler/inhalt) und dann eine externe Webseite aufruft. Diese externe Webseite enthält nun über den Referrer Header die Information, dass der User von example.com/sensibler/inhalt kommt. Dadurch ist also ein Fall von Information Leakage entstanden.

Potenziell sensible Informationen, die über den Referrer Header an andere Seiten geleaked werden können, sind beispielsweise:

  • Pfade:
    • B. example.com/customers/[firmenname]/[kundennummer]
  • User Informationen:
    • B. example.com/profile/user=example@example.com
  • Session Informationen:
    • B. example.com?sessid=12345
  • Versions- und Technologieinformationen:
    • B. example.com/wp-content/plugins/testplugin?v=1.2.3

 

Einige dieser Pfade stellen schon für sich selbst genommen Schwachstellen dar, da sensible Informationen wie Session Informationen nicht in der URL enthalten sein dürfen. Noch schlimmer wird es allerdings, wenn diese sensiblen Informationen wahllos mit diversen Seiten geteilt werden.

Welche Werte gibt es für den Referrer-Policy Header?

Für den Referrer-Policy Header gibt es mehrere Werte. Wie sich diese jeweils auswirken, haben wir für Sie grafisch dargestellt. Links befindet sich dabei die Webseite auf der man sich gerade befindet (mit sensiblen Inhalten in der URL), dann werden verschiedene Webseiten aufgerufen:

  • Eine andere Seite derselben Domain, z.B. die Startseite (ganz oben, grüner Hintergrund)
  • Eine externe Seite über eine sichere https Verbindung (Mitte, blauer Hintergrund)
  • Eine externe Seite über eine unsichere http Verbindung (Unten, blauer Hintergrund)

Hinter diesen Webseiten ist dann jeweils der Referrer Header aufgeführt, den diese erhalten.

no-referrer

Es wird kein Referrer Header verschickt, weder an interne noch an externe Webseiten:

no-referrer-when-downgrade

Der Referrer wird an Webseiten mit demselben (oder einem höheren) Protokoll verschickt, egal ob extern oder intern. Webseiten mit einem niedrigeren Protokoll erhalten keinen Referrer Header:

origin

Der Referrer Header wird unabhängig davon verschickt, ob es sich um eine interne oder externe Webseite handelt. Auch die Sicherheit der Verbindung spielt keine Rolle. Allerdings ist der Referrer Header mit dieser Einstellung auf die Domain beschränkt, Directory Informationen oder Parameter sind also nicht enthalten:

origin-when-cross-origin

Interne Webseiten erhalten den kompletten Referrer Header, bei externen Webseiten wird lediglich die Domain angegeben. Die Sicherheit der Verbindung spielt insofern eine Rolle, dass eine interne http Seite auch nur den verkürzten Domain Referrer erhalten würde:

same-origin

Interne Webseiten erhalten den kompletten Referrer Header, externe Webseiten erhalten gar keinen Referrer Header. Die Sicherheit der Verbindung spielt bei dieser Konfiguration keine Rolle:

strict-origin

Interne und externe Webseiten erhalten den verkürzten Domain Referrer, wenn sie über sichere Verbindungen aufgerufen werden. Webseiten, die über unsichere Verbindungen genutzt werden, erhalten keinen Referrer Header:

strict-origin-when-cross-origin

Interne Webseiten erhalten den kompletten Referrer Header. Externe Webseiten, die über sichere https Verbindungen aufgerufen werden, erhalten den verkürzten Domain Referrer Header und Webseiten, die über unsichere http Verbindungen aufgerufen werden, erhalten keinen Referrer Header:

unsafe-url

Der kompletter Referrer Header wird an alle verschickt, egal ob intern oder extern und egal ob über sichere Verbindungen oder über unsichere:

Auf welche Werte sollte der Referrer-Policy Header gesetzt sein?

Vermieden werden sollten die Werte unsafe-url und no-referrer-when-downgrade, da diese potenziell sensible Informationen an andere Seiten leaken können.

Bei den anderen Einstellungen muss man abwägen: Den kompletten Referrer Header an interne Webseiten zu schicken hat den Vorteil, dass sich somit das Verhalten der Webseiten Besucher über die Logfiles besser nachverfolgen lässt (z.B. könnte man sehen, dass viele User von der Startseite / direkt zu /angebote wechseln und diese Beobachtung beim Aufbau und bei der Optimierung der Webseite mit einbeziehen).

Andererseits könnte sich auch in diesem Fall potenziell ein Fall von Information Leakage ergeben: Nämlich dann, wenn ein Mitarbeiter zwar Zugriff auf die Logfiles hat, aber nicht auf Informationen über beispielsweise User. Über die Referrer Header in den Logfiles wäre in diesem Fall möglicherweise ein Zugriff auf bestimmte User Informationen möglich.

Den verkürzten Domain Referrer mit anderen Webseiten zu teilen, ist wohl in den meisten Fällen unproblematisch. Allerdings kann es auch hier Spezialfälle geben. Wenn Sie beispielsweise eine Webseite betreiben, die möglichst geheim bleiben soll, dann müsste der Referrer Policy Header so gesetzt werden, dass auch die Domain nicht geleaked wird (z.B. auf no-referrer).