Zum Hauptinhalt springen




Best Practices zum Festlegen Ihrer Empfehlungsrichtlinie und Verwenden der Empfehlung bei eingehenden Anfragen.


Aktualisiert

Es erscheint in:
Gesichert und geladen

Zusammenfassung

  • Das unerwartete Leck von Cross-Origin-Informationen behindert die Privatsphäre von Webbenutzern. Eine schützende Empfehlungsrichtlinie kann helfen.
  • Erwägen Sie die Einrichtung einer Empfehlungsrichtlinie Strict-Origin-wenn-Cross-Origin. Es behält einen Großteil des Nutzens des Absenders bei, während das Risiko von Datenlecks zwischen den Quellen verringert wird.
  • Verwenden Sie keine Referenzen für den Schutz vor Cross-Site Request Forgery (CSRF). Verwenden CSRF-Token
    stattdessen und andere Header als zusätzliche Sicherheitsebene.

Bevor wir anfangen:

  • Wenn Sie sich über den Unterschied zwischen „Site“ und „Ursprung“ nicht sicher sind, finden Sie weitere Informationen unter „Gleiche Site“ und „gleicher Ursprung“.
  • das Referent In der Kopfzeile fehlt ein R aufgrund eines ursprünglichen Rechtschreibfehlers in der Spezifikation. das
    Referrer-Richtlinie Kopfzeile u Verweiser in JavaScript und DOM werden korrekt geschrieben.

Referer und Referrer-Policy 101

HTTP-Anforderungen können optional enthalten Referent

Header, die den Ursprung oder die URL der Webseite angibt, von der die Anfrage gestellt wurde. das Referrer-Richtlinie

Header definiert, welche Daten in verfügbar sind Referent Header.

Im folgenden Beispiel ist die Referent Der Header enthält die vollständige URL der Seite auf Seite eins von wo aus die Anfrage gestellt wurde.

referrer-basics-9699140

das Referent Der Header kann in verschiedenen Arten von Anfragen vorhanden sein:

  • Navigationsanfragen, wenn ein Benutzer auf einen Link klickt
  • Unterressourcenanforderungen, wenn ein Browser Bilder, iFrames, Skripte und andere Ressourcen anfordert, die eine Seite benötigt.

Für Navigationen und Iframes kann auf diese Daten auch über JavaScript zugegriffen werden
Dokument.Referrer.

das Referent Der Wert kann aufschlussreich sein. Beispielsweise könnte ein Analysedienst den Wert verwenden, um festzustellen, dass 50% der Besucher auf site-two.example Er kam aus social-network.example.

Wenn jedoch die vollständige URL einschließlich Pfad und Abfragezeichenfolge in der gesendet wird Referent durch Ursprünge, das könnte sein Privatsphäre behindern und posieren Sicherheits Risikos Auch. Sehen Sie sich diese URLs an:

referrer-urls-6903646

Die URLs 1-5 enthalten private Informationen, manchmal sogar identifizierende oder vertrauliche Informationen. Sie unbemerkt durch die Ursprünge zu filtern, kann die Privatsphäre von Webbenutzern gefährden.

Die URL-Nr. #6 ist ein Kapazitäts-URL. Sie möchten nicht, dass es in die Hände von jemand anderem als dem beabsichtigten Benutzer fällt. In diesem Fall könnte ein böswilliger Akteur das Konto dieses Benutzers kapern.

Um einzuschränken, welche Empfehlungsdaten für Anfragen von Ihrer Website verfügbar sind, können Sie eine Empfehlungsrichtlinie festlegen.

Welche Richtlinien sind verfügbar und wie unterscheiden sie sich?

Sie können eine von acht Richtlinien auswählen. Gemäß der Richtlinie sind die verfügbaren Daten von der Referent
Kopfzeile (und Dokument.Referrer) kann sein:

  • Keine Daten (nicht Referent Kopfzeile ist vorhanden)
  • nur die Herkunft
  • Die vollständige URL: Quelle, Pfad und Abfragezeichenfolge
referrer-data-1659020

Einige Richtlinien sind so konzipiert, dass sie sich je nach Art unterschiedlich verhalten Kontext: Cross-Origin- oder Same-Origin-Anfrage, Sicherheit (wenn das Ziel der Anfrage genauso sicher ist wie der Ursprung) oder beides. Dies ist nützlich, um die Menge an Informationen zu begrenzen, die zwischen den Ursprüngen geteilt wird, oder für weniger sichere Ursprünge, während der Referrer-Reichtum auf Ihrer eigenen Website erhalten bleibt.

Nachfolgend finden Sie eine Übersicht, die zeigt, wie Referrer-Richtlinien die im Referrer-Header verfügbaren URL-Daten einschränken und Dokument.Referrer:

referrer-policies-5521800

MDN bietet a vollständige Liste der Richtlinien und Verhaltensbeispiele.

Dinge zu beachten:

  • Alle schemafähigen Richtlinien (HTTPS vs. HTTP) (strenger Ursprung,
    Kein-Referrer-bei-Downgrade y Strict-Origin-wenn-Cross-Origin) behandeln Anforderungen von einem HTTP-Ursprung an einen anderen HTTP-Ursprung genauso wie Anforderungen von einem HTTPS-Ursprung an einen anderen HTTPS-Ursprung, selbst wenn HTTP weniger sicher ist. Denn bei diesen Policen kommt es darauf an, ob eine Sicherheit vorliegt degradieren auftritt, d. h. wenn die Anfrage Daten von einer verschlüsselten Quelle einer unverschlüsselten Quelle zugänglich machen kann. Eine HTTP → HTTP-Anforderung wird nicht die ganze Zeit verschlüsselt, sodass es zu keiner Verschlechterung kommt. HTTPS → HTTP-Anfragen hingegen stellen eine Verschlechterung dar.
  • Wenn eine Anfrage ist gleiche Herkunft, bedeutet dies, dass das Schema (HTTPS oder HTTP) dasselbe ist; daher gibt es keine Sicherheitsverschlechterung.

Standard-Referrer-Richtlinien in Browsern

Stand Juli 2020

Wenn keine Referrer-Richtlinie festgelegt ist, wird die Standardrichtlinie des Browsers verwendet.

Browser Standard Referrer-Richtlinie / Verhalten
Chrom

Planen zu wechseln Strict-Origin-wenn-Cross-Origin im Fassung 85 (bisher Kein-Referrer-bei-Downgrade)

Feuerfuchs
  • Kein-Referrer-bei-Downgrade
  • In Anbetracht Strict-Origin-wenn-Cross-Origin
  • Strict-Origin-wenn-Cross-Origin im privaten Surfen und für Tracker
Kante
  • Kein-Referrer-bei-Downgrade
  • experimentieren mit Strict-Origin-wenn-Cross-Origin
Safari

Ähnlich zu Strict-Origin-wenn-Cross-Origin. Sehen
Tracking-Verhinderung Tracking-Verhinderung für Details.

Einrichten Ihrer Empfehlungsrichtlinie: Best Practices

Zielsetzung: Richten Sie explizit eine Richtlinie zur Verbesserung der Privatsphäre ein, wie z
Strict-Origin-wenn-Cross-Origin(oder strenger).

Es gibt verschiedene Möglichkeiten, Empfehlungsrichtlinien für Ihre Website festzulegen:

Sie können verschiedene Richtlinien für verschiedene Seiten, Anforderungen oder Elemente festlegen.

Der HTTP-Header und das Meta-Element befinden sich auf Seitenebene. Die Rangfolge bei der Bestimmung der effektiven Richtlinie eines Elements ist:

  1. Richtlinie auf Artikelebene
  2. Richtlinie auf Seitenebene
  3. Standardbrowser

Beispiel:

index.html:

<meta Süßkartoffel="Verweiser" Inhalt="Strict-Origin-wenn-Cross-Origin" />
<img src="..." referrerpolicy="Kein-Referrer-bei-Downgrade" />

Das Bild wird mit a angefordert Kein-Referrer-bei-Downgrade Richtlinie, während alle anderen Anforderungen für untergeordnete Ressourcen auf dieser Seite der Richtlinie folgen Strict-Origin-wenn-Cross-Origin Politik.

Wie wird die Referenzrichtlinie angezeigt?

Beim Prüfen einer HTTP-Anfrage:

  • In Chrome, Edge und Firefox können Sie die sehen Referrer-Richtlinie.
  • In Chrome, Edge, Safari und Firefox können Sie die sehen Referent.

referrer-devtools-4780185

Chrome-Entwicklungstools, Netz Panel mit einer ausgewählten Anfrage.

Welche Richtlinie sollten Sie für Ihre Website festlegen?

Zusammenfassung: Richten Sie explizit eine Richtlinie zur Verbesserung der Privatsphäre ein Strict-Origin-wenn-Cross-Origin (oder strenger).

Warum "explizit"?

Wenn keine Referrer-Richtlinie festgelegt ist, wird die Standardrichtlinie des Browsers verwendet. Tatsächlich geben Websites häufig der Standardeinstellung des Browsers nach. Das ist aber nicht optimal, denn:

  • Die standardmäßigen Browserrichtlinien sind Kein-Referrer-bei-Downgrade,
    Strict-Origin-wenn-Cross-Originoder strenger, je nach Browser und Modus (privat / inkognito). Daher verhält sich Ihre Website nicht in allen Browsern vorhersehbar.
  • Browser übernehmen strengere Standardeinstellungen, wie z Strict-Origin-wenn-Cross-Origin und Mechanismen wie Referenzausschnitt für Cross-Origin-Anfragen. Wenn Sie sich ausdrücklich für eine Richtlinie zur Verbesserung des Datenschutzes entscheiden, bevor sich die Standardeinstellungen des Browsers ändern, haben Sie die Kontrolle und können Ihre Tests so durchführen, wie Sie es für richtig halten.

Warum Strict-Origin-wenn-Cross-Origin (oder strenger)?

Sie brauchen eine Richtlinie, die sicher, datenschutzfreundlich und nützlich ist; was "nützlich" bedeutet, hängt davon ab, was Sie vom Absender wollen:

  • Sicher- Wenn Ihre Website HTTPS verwendet (wenn dies nicht der Fall ist, machen Sie es zu einer Priorität), möchten Sie nicht, dass Ihre Website-URLs bei Nicht-HTTPS-Anfragen durchsickern. Da jeder im Netzwerk sie sehen kann, würde dies Ihre Benutzer Man-in-the-Middle-Angriffen aussetzen. Die Polizisten Kein-Referrer-bei-Downgrade,
    Strict-Origin-wenn-Cross-Origin, kein Verweis y strenger Ursprung Löse dieses Problem.
  • Verbesserung der Privatsphäre: für eine Cross-Origin-Anfrage, Kein-Referrer-bei-Downgrade teilen Sie die vollständige URL; dies verbessert die Privatsphäre nicht. Strict-Origin-wenn-Cross-Origin y strenger Ursprung Teilen Sie einfach den Ursprung und kein Verweis no comparte nada en absoluto. Esto te deja con
    Strict-Origin-wenn-Cross-Origin, strenger Ursprungy kein Verweis como opciones para mejorar la privacidad.
  • Nützlich: kein Verweis y strenger Ursprung nunca comparta la URL completa, incluso para solicitudes del mismo origen, por lo que si necesita esto, Strict-Origin-wenn-Cross-Origin es una mejor opción.

Todo esto significa que Strict-Origin-wenn-Cross-Origin es generalmente una opción sensata.

Ejemplo: establecer un Strict-Origin-wenn-Cross-Origin política:

index.html:

<meta Süßkartoffel="Verweiser" Inhalt="Strict-Origin-wenn-Cross-Origin" />

O del lado del servidor, por ejemplo en Express:

const helmet = benötigen('helmet');
App.use(helmet.referrerPolicy({policy: 'strict-origin-when-cross-origin'}));

Was, wenn Strict-Origin-wenn-Cross-Origin (o más estricto) no se adapta a todos sus casos de uso?

En este caso, no establezca una política insegura como unsafe-url. Lo que puede hacer en cambio es tomar un
enfoque progresivo: establezca una política de protección para su sitio web y, si es necesario, una política más permisiva para solicitudes o elementos específicos.

Beispiel:

index.html:

<meta Süßkartoffel="Verweiser" Inhalt="Strict-Origin-wenn-Cross-Origin" />
<img src="" referrerpolicy="Kein-Referrer-bei-Downgrade" />

script.js:

holen(URL, {referrerPolicy: 'no-referrer-when-downgrade'});

Fallstricke!

Una política por elemento no es compatible con todos los navegadores navegadores (Ejemplos: referrerpolicy zum zu

Elemente, zum img Elemente, y para Verknüpfung Elemente). Pero los navegadores que no admiten esto tienden a adoptar un enfoque estricto de todos modos (por ejemplo, todas las solicitudes de origen cruzado se establecerán Referent al origen).

Was sollten Sie noch beachten?

Su política debe depender de su sitio web y de los casos de uso; esto depende de usted, su equipo y su empresa. Si algunas URL contienen datos de identificación o confidenciales, establezca una política de protección.

Warnung: Los datos que pueden no parecerle sensibles pueden serlo para sus usuarios, o simplemente no son datos que quieren o esperan filtrar silenciosamente el origen cruzado.

Verwenden der Referenz für eingehende Anfragen – Best Practices

Schutz vor Cross-Site Request Forgery (CSRF).

El uso de la referencia de las solicitudes entrantes para la protección CSRF tiene algunas dificultades:

  • Puede ocultarse con el kein Verweis política, o falsificada por el emisor de la solicitud. Si no tiene control sobre la implementación del emisor de solicitudes, no puede hacer suposiciones sobre ningún encabezado que reciba.
  • das Referent Kopfzeile (und Dokument.Referrer) puede contener más datos de los que necesitas, por ejemplo, una URL completa cuando solo desea saber si la solicitud es de origen cruzado.

Benutzen CSRF-Token
como su protección principal en su lugar. Para mayor protección, use SameSite, y en lugar de Referent, puede usar encabezados como
Origin (disponible en solicitudes POST y CORS) y
Sec-Fetch-Site (si está disponible).

Anmeldung

das Referent Kopfzeile (und Dokument.Referrer) puede contener datos privados, personales o de identificación, por lo que debe tratarse como tal.

Y en lugar de Referent, considere usar otros encabezados que puedan abordar su caso de uso:
Origin y
Sec-Fetch-Site.

Zahlungen

Los proveedores de pago pueden confiar en Referent encabezado de las solicitudes entrantes de controles de seguridad.

Zum Beispiel:

  • El usuario hace clic en un Kaufen botón encendido online-shop.example/cart/checkout.
  • online-shop.example umleiten zu payment-provider.example para gestionar la transacción.
  • payment-provider.example comprueba el Referent de esta solicitud contra una lista de permitidos
    Referent valores establecidos por los comerciantes. Si no coincide con ninguna entrada de la lista,
    payment-provider.example rechaza la solicitud. Si coincide, el usuario puede continuar con la transacción.

Best Practices für Sicherheitskontrollen im Zahlungsverkehr

Resumen: como proveedor de pagos, puede utilizar el Referent como un control básico contra ataques ingenuos, pero definitivamente debe tener otro método de verificación más confiable en su lugar.

das Referent El encabezado por sí solo no es una base confiable para una verificación: el sitio solicitante, ya sea un comerciante legítimo o no, puede establecer fácilmente un kein Verweis política que hará que el Referent
información no disponible para el proveedor de pago. Sin embargo, como proveedor de pagos, mirando el
Referent puede ayudarlo a atrapar a atacantes ingenuos que no establecieron un kein Verweis política. Entonces puede decidir usar el Referent como primer control básico. Si tu haces eso:

  • No esperes el Referent estar siempre presente; y si está presente, solo verifique con la pieza de datos que incluirá como mínimo: el origen. Al configurar la lista de permitidos
    Referent valores, asegúrese de que no se incluya ninguna ruta, sino solo el origen. Ejemplo: el permitido
    Referent valores para online-shop.example Es sollte sein online-shop.examplenein
    online-shop.example/cart/checkout. ¿Por qué? Porque al esperar o no Referent en absoluto o un
    Referent valor que es el origen del sitio web solicitante, evita errores inesperados ya que está no hacer suposiciones sobre el Referrer-Richtlinie su comerciante ha establecido o sobre el comportamiento del navegador si el comerciante no tiene una política establecida. Tanto el sitio como el navegador podrían quitar la Referent enviado en la solicitud entrante solo al origen o no enviar el Referent en absoluto.
  • Wenn er Referent está ausente o si está presente y su Referent la verificación de origen fue exitosa: puede pasar a su otro método de verificación más confiable (ver más abajo).

¿Cuál es un método de verificación más confiable?

Un método de verificación confiable es permitir que el solicitante hash los parámetros de la solicitud junto con una clave única. Como proveedor de pagos, puede calcula el mismo hash de tu lado y solo acepte la solicitud si coincide con su cálculo.

¿Qué pasa con el Referent ¿Cuándo un sitio de comerciante HTTP sin política de referencia redirecciona a un proveedor de pago HTTPS?

Unterlassen Sie Referent será visible en la solicitud para el proveedor de pago HTTPS, porque la mayoría de los navegadores utilizan Strict-Origin-wenn-Cross-Origin oder
Kein-Referrer-bei-Downgrade de forma predeterminada cuando un sitio web no tiene una política establecida. También tenga en cuenta que Cambio de Chrome a una nueva política predeterminada no cambiará este comportamiento.

Fazit

Una política de referencia protectora es una excelente manera de brindar a sus usuarios más privacidad.

Para obtener más información sobre las diferentes técnicas para proteger a sus usuarios, consulte la colección segura y protegida de web.dev.

Muchas gracias por las contribuciones y comentarios a todos los revisores, especialmente a Kaustubha Govind, David Van Cleve, Mike West, Sam Dutton, Rowan Merewood, Jxck y Kayce Basques.

Meint