So lassen Sie eine https-Website den https-Referrer senden und den http-Referrer springen

So lassen Sie eine https-Website den https-Referrer senden und den http-Referrer springen

Dieser Artikel beschreibt einen Vorschlag für einen Metadatenparameter für den Referrer im HTTP-Protokoll. Mithilfe dieses Metadatenparameters kann ein HTML-Dokument den Referrer in einer HTTP-Anforderung steuern, z. B. ob ein Referrer, nur ein Hostname oder ein vollständiger Referrer gesendet werden soll. Obwohl es einige Möglichkeiten zur Steuerung des Referrers gibt, wie etwa Flash und einige JS-Tricks, beschreibt dieser Artikel ein anderes Bild.

Anwendungsszenarien

In einigen Fällen möchte die Website aus bestimmten Gründen die von der Seite an den Server gesendeten Referrer-Informationen steuern und kann diesen Referrer-Metadatenparameter verwenden.

Datenschutz

Auf Social-Networking-Sites gibt es im Allgemeinen persönliche Benutzerseiten, auf denen Benutzer externe Links hinzufügen können. Social-Networking-Sites möchten die URLs der Benutzerseiten möglicherweise nicht offenlegen, wenn Benutzer auf diese Links klicken, da diese URLs vertrauliche Informationen enthalten können. Natürlich möchten manche Social-Networking-Sites im Referrer möglicherweise nur einen Hostnamen und nicht die vollständigen URL-Informationen angeben.

Sicherheit

Einige Websites, die https verwenden, verwenden möglicherweise einen Parameter (sid usw.) in der URL als Identitätsnachweis des Benutzers und müssen Ressourcen von anderen https-Websites einführen. In diesem Fall möchte die Website die Identitätsnachweisinformationen des Benutzers auf keinen Fall preisgeben.

Objektfähigkeitsdisziplin

Einige Websites befolgen die Object-Capability Discipline, und der Referrer widerspricht dieser Strategie. Daher ist es für die Object-Capability Discipline von Vorteil, wenn die Website den Referrer kontrollieren kann.

Technische Details

Der Metedata-Parameter des Referrers kann auf die folgenden Wertetypen gesetzt werden:

niemals
stets
Herkunft
Standard

Wenn ein Meta-Tag in ein Dokument eingefügt wird und der Wert des Name-Attributs „Referer“ lautet, verarbeitet der Browser-Client das Tag wie folgt:

1. Wenn das Meta-Tag kein Inhaltsattribut enthält, beenden Sie alle folgenden Vorgänge
2. Kopiere den Wert von content in referrer-policy und wandle ihn in Kleinbuchstaben um
3. Überprüfen Sie, ob der Wert des Inhalts einem der oben aufgeführten Werte entspricht. Wenn nicht, setzen Sie den Wert auf den Standardwert.

Wenn der Browser nach den obigen Schritten anschließend eine HTTP-Anfrage initiiert, antwortet er je nach Wert des Inhalts wie folgt (der Wert der Referrer-Richtlinie unten ist der Wert des Inhalts im Meta-Tag):

1. Wenn der Wert der Referrer-Richtlinie „nie“ lautet: Löschen Sie den Referrer im HTTP-Kopf.
2. Wenn der Wert der Referrer-Richtlinie Standard ist: Wenn die aktuelle Seite das https-Protokoll verwendet und die zu ladende Ressource das normale http-Protokoll verwendet, setzen Sie den Referrer im http-Header auf leer.
3. Wenn der Wert der Referrer-Richtlinie „Origin“ ist, wird nur der Ursprungsteil gesendet.
4. Wenn der Wert von referer-policy immer lautet: Der Referrer-Wert im HTTP-Header wird nicht geändert. Hinweis: In diesem Fall enthält der Anforderungsheader zum Laden der Ressource auch den Referrer, wenn die aktuelle Seite das HTTPS-Protokoll verwendet und die zu ladende Ressource das HTTP-Protokoll verwendet.

Beispiel

Wenn die Seite das folgende Meta-Tag enthält, enthalten alle von der aktuellen Seite initiierten Anfragen nicht den Referrer:

<meta name="referrer" content="nie">

Wenn die Seite das folgende Meta-Tag enthält, enthält die von der aktuellen Seite initiierte HTTP-Anfrage nur den Ursprungsteil (Hinweis: Dem Kontext im Originaltext zufolge verstehe ich, dass der Ursprung hier die partielle URL ist, die das Schema und den Hostnamen enthält und keine anderen URL-Teile wie den Pfad einschließt) und nicht die vollständige URL:

<meta name="referrer" content="herkunft">

Hinweis: Bei der Verwendung der in diesem Artikel beschriebenen Meta-Tags wird die ursprüngliche Referrer-Strategie des Browsers durchbrochen. So wird beispielsweise beim Sprung von einer http-Seite zu einer https-Seite, sofern der entsprechende Wert gesetzt ist, auch der Referrer mitgeführt.

Andere Probleme

In welcher Beziehung steht dies zu rel=noreferer? Es ist möglich, dass rel=noreferer den durch das Meta-Tag in diesem Artikel festgelegten Wert überschreibt. Das ist eine funktionale Abdeckung.
Bei den Ursprungsinformationen handelt es sich nicht um eine vollständige URL, daher fügt der Browserclient wahrscheinlich nach dem Ursprung einen / als Pfadteil hinzu.
Was passiert, wenn der Ursprung eindeutig ist? Es wird davon ausgegangen, dass der Referrer ignoriert wird.

Anmerkung des Übersetzers

Dieser Artikel wurde ursprünglich im Jahr 2012 verfasst. Die ursprüngliche Seite wurde inzwischen verworfen und die Seite mit der W3C-Referrer-Richtlinie wurde bereitgestellt. Der Übersetzer hat jedoch festgestellt, dass derzeit viele Websites die Referrer-Verifizierungsmethode verwenden, um sich gegen CSRF zu verteidigen, und manchmal zulassen, dass der Referrer leer bleibt. Darüber hinaus verwenden auch einige wichtige Unternehmen von BAT-Herstellern die Referrer-Verifizierungsmethode und lassen den Referrer leer bleiben, um sich gegen JSON-Hijacking zu verteidigen. Sie denken vielleicht, dass das, was in diesem Artikel beschrieben wird, nur ein Vorschlag ist, aber FireFox hat in einem Artikel vom 21. erklärt, dass es ab Firefox 36 Beta die Referrer-Richtlinie unterstützen wird, was zweifellos das Geschäft einiger Hersteller bedrohen wird.

[Referenzquelle wiki.whatwg.org, bitte geben Sie an, dass sie von FreeBuf Hackers and Geeks (FreeBuf.COM) stammt]

Problem beim https- und http-Referrersprung

Der Referer im HTTP-Protokollheader dient dem Server vor allem dazu, die Quellseite zu ermitteln, also von welcher Seite der Nutzer kam. Get-Methode: $_SERVER['HTTP_REFERER']

Bei der https->http-Umleitung wird die Weiterleitung der Empfehlung nicht empfohlen, bei https->https und http->https gibt es dieses Problem jedoch nicht.

Beispielsweise erhalte ich die Adresse der QR-Code-Schnittstelle:

Der richtige Effekt

https://qrcode.artron.net/?text=https|http://m-exhibit.artron.net/&el=10&margin=1

Die Wirkung des Fehlers

http://qrcode.artron.net/?text=https://m-exhibit.artron.net/jump/index

Die Überprüfungsergebnisse zeigen, dass https mit einigen Parameterproblemen von http kompatibel ist, http jedoch nicht mit den Parameterproblemen von https. Hier ist der Unterschied zwischen http und https.

Das Hypertext Transfer Protocol (HTTP) wird zum Übertragen von Informationen zwischen Webbrowsern und Website-Servern verwendet. Das HTTP-Protokoll sendet Inhalte im Klartext und bietet keinerlei Form der Datenverschlüsselung. Wenn ein Angreifer die Übertragungsnachricht zwischen dem Webbrowser und dem Website-Server abfängt, kann er die darin enthaltenen Informationen direkt lesen. Daher ist das HTTP-Protokoll nicht für die Übertragung einiger vertraulicher Informationen wie Kreditkartennummern, Passwörter usw. geeignet.
Um diesen Defekt des HTTP-Protokolls zu beheben, muss ein anderes Protokoll verwendet werden: Secure Sockets Layer Hypertext Transfer Protocol HTTPS. Um die Sicherheit der Datenübertragung zu gewährleisten, ergänzt HTTPS das auf HTTP basierende SSL-Protokoll. SSL verwendet Zertifikate zur Überprüfung der Identität des Servers und verschlüsselt die Kommunikation zwischen Browser und Server.

Die Hauptunterschiede zwischen HTTPS und HTTP sind folgende:

1. Für das https-Protokoll muss ein Zertifikat bei einer Zertifizierungsstelle beantragt werden. Normalerweise gibt es nur wenige kostenlose Zertifikate, für die Sie bezahlen müssen.
2. http ist das Hypertext-Übertragungsprotokoll, Informationen werden im Klartext übertragen, während https das sichere, SSL-verschlüsselte Übertragungsprotokoll ist.
3. http und https verwenden völlig unterschiedliche Verbindungsmethoden und unterschiedliche Ports. Ersteres ist 80 und letzteres ist 443.
4. Die http-Verbindung ist sehr einfach und zustandslos; das HTTPS-Protokoll ist ein aus dem SSL+HTTP-Protokoll aufgebautes Netzwerkprotokoll, das verschlüsselte Übertragungen und Identitätsauthentifizierungen durchführen kann und sicherer als das http-Protokoll ist.

Hier die Antworten auf die Fragen:

Gemäß der obigen Beschreibung sendet der Browser beim Umleiten von einer HTTPS-Site zu einer HTTP-Site standardmäßig keinen Referrer. Es gibt ungefähr zwei Möglichkeiten, den Browser dazu zu bringen, einen Referrer zu senden:

1. Fügen Sie den Kopf der Station A hinzu

<meta name="referrer" content="immer">

2. Station B verwendet ebenfalls HTTPS

Wenn Station A eine verbindliche Regel hat, keine Referrer zu senden, und Station B keine Kontrolle über Station A hat, können wir, wie oben erwähnt, natürlich nicht die Statistiktools von Drittanbietern kontrollieren, um die Schlüsselwörter der Baidu-Suchmaschine zu zählen.

<<:  So zeigen Sie die Ausführungszeit von SQL-Anweisungen in MySQL an

>>:  Detaillierte Erklärung der Lösung für HTML-Layout mit festen linken und rechten Breiten und adaptiver Mitte

Artikel empfehlen

Detaillierte Erklärung zur Verwendung von Standard in MySQL

NULL- und NOT NULL-Modifikatoren, DEFAULT-Modifik...

Vorteile und Probleme des XHTML CSS Website Designs

XHTML ist die derzeit international verbreitete S...

Eine audiovisuelle Linux-Distribution, die Audiophile anspricht

Ich bin kürzlich auf das Audiovisual Linux Projec...

Wie oft werden mehrere setStates in React aufgerufen?

Inhaltsverzeichnis 1. Zwei setState, wie oft soll...

Detailliertes Tutorial zur Installation von VirtualBox 6.0 auf CentOS 8 / RHEL 8

VirtualBox ist ein kostenloses Open Source-Virtua...

Mehrere Möglichkeiten zum Senden von HTML-Formularen_PowerNode Java Academy

Methode 1: Absenden über den Absenden-Button <...

Installieren Sie Ethereum/Ethereum von Grund auf unter CentOS7

Inhaltsverzeichnis Vorwort Fügen Sie Sudo-Schreib...

Beispielcode zur Implementierung des Regentropfen-Animationseffekts mit CSS

Glasfenster Was wir heute erreichen werden, ist d...

Beispiel für Javascript-Bubblesort

Inhaltsverzeichnis 1. Was ist Bubble Sort 2. Gebe...

Web-Standardanwendung: Neugestaltung der Tencent QQ-Homepage

Die Homepage von Tencent QQ wurde neu gestaltet un...