web-dev-qa-db-de.com

Entfernen Sie den http-Verweiser

Ist es eine Möglichkeit, HTTP-Verweisinformationen im Anforderungsheader zu entfernen oder auszublenden? ich möchte http referrer-informationen von benutzern entfernen, die zu einer anderen Site gehen, und dabei ein Skript verwenden, das möglicherweise in Javascript Python oder Django enthalten ist

beispiel:

Host    slogout.espncricinfo.com
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0    
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    
Accept-Language en-us,en;q=0.5    
Accept-Encoding gzip, deflate    
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7    
Connection  keep-alive
Referer http://slogout.espncricinfo.com/index.php?page=index&level=login
47
shiva

Ab 2015 verhindern Sie das Senden der Referer-Kopfzeile: 

Fügen Sie dies einfach in den Kopfbereich der Webseite ein:

 <meta name="referrer" content="no-referrer" />

Dies funktioniert sowohl für Links als auch für Ajax-Anfragen durch JavaScript-Code auf der Seite.

Andere gültige meta-Optionen sind:

<meta name="referrer" content="unsafe-url" />
<meta name="referrer" content="Origin" />
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="referrer" content="Origin-when-cross-Origin" />

• Sehen Sie hier, ob es für Ihren Browser funktioniert: http://caniuse.com/#feat=referrer-policy

• Spezifikationen finden Sie hier: http://w3c.github.io/webappsec/specs/referrer-policy/

Beachten Sie auch, dass Browser jetzt den Header Origin senden (mit CORS-Anforderungen und POST -Anfragen siehe hier: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin ) die Domäne und Port enthält und, soweit ich weiß, nicht entfernt werden kann. Wenn Sie <meta name="referrer" content="Origin" /> verwenden, enthält der Referrer ähnliche Informationen wie der Origin-Header. Dies ist aus Sicht der Privatsphäre bereits gut, da die genaue Seite des Benutzers ausgeblendet wird.

Update:

Wenn Sie den Verweis nur mithilfe von JavaScript entfernen möchten, können Sie das entsprechende Meta-Tag unmittelbar vor der Ajax-Anforderung dynamisch hinzufügen. Dieses JavaScript fügt <meta name="referrer" content="no-referrer" /> zum Kopfbereich der Webseite hinzu:

var meta = document.createElement('meta');
meta.name = "referrer";
meta.content = "no-referrer";
document.getElementsByTagName('head')[0].appendChild(meta);
92
MarcG

Es gibt eine Cross-Browser-Lösung in Javascript, die Iframes verwendet, die dynamisch erstellt wurde. Ein Proof-of-Concept überprüfen (Haftungsausschluss: Es wird eine kleine JS-Lib verwendet, die für diesen Zweck codiert ist).

10
jpgerek

Wenn Sie nur die vollständige URL ausblenden möchten und es Ihnen nichts ausmacht, Ihren Domainnamen offen zu halten, erledigt dieser kleine Javascript-Code die Aufgabe.

Ihr Benutzer ist bei example.com/secret_url_we_want_to_hide, Ihr Benutzer klickt auf einen Link, der ihn an google.com senden soll. Anstelle von <a href="http://google.com">Go to Google</a> verwenden wir jedoch Folgendes:

a href="http://example.com/redirect.html#http://google.com">Go to Google</a>

Dabei ist /redirect.html eine HTML-Seite, die Folgendes enthält: (Bearbeiten: Bitte sehen Sie das Update!)

<html><head></head><script>
window.location.replace(location.hash.substring(1));
</script></html>

Google.com zeigt http://example.com/redirect.html im refererer-Tag und niemals den tatsächlichen example.com/secret_url_we_want_to_hide.

UPDATE:

Firefox hat einen Fehler mit location.hash, die Problemumgehung lautet wie folgt:

<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>
5
Hello World

Es gibt verschiedene Mechanismen, um dies zu tun, je nachdem welche Browserversion Sie verwenden. Bei einem beliebigen Browser können Sie, wenn das Ziel über HTTP ist, den Ursprung "waschen", indem Sie auf eine HTTPS-Seite umleiten, die dann zur Zielseite navigiert.

Bei IE können Sie die Navigation mit JavaScript (z. B. window.open) durchführen, wodurch der Referer unterdrückt wird. Oder Sie können META Refresh verwenden, aber das kostet Perfektion. WebKit-basierte Browser finden Sie unter NoReferrer LINK REL-Option: http://www.webkit.org/blog/907/webkit-nightlies-support-html5-noreferrer-link-relation/

4
EricLaw

Ich hatte nach einer ähnlichen Lösung gesucht, den Referrer leer gelassen, aber nur, um einmalige Besuche von einer verweisenden Website zu zählen. Das Problem, das ich hatte, war, dass, wenn jemand meine Website über einen bestimmten Link besuchte, der Besuchsschalter hoch wurde, aber wenn dieser die Seite aktualisiert hatte, war der Besucherzähler immer noch hoch.

Ich habe Google dazu verwendet, mehrere Ressourcen zu diesem Thema aufzurufen. Ja, es war sehr schwierig, die Antwort zu finden, bis mich jemand darauf hinwies, auf php.net nach einer Lösung zu suchen.

Ich habe die Lösung gefunden

header('Refresh: 0; url=index.php');

Aber gerade der obige Code ist keine Lösung. Lösung liegt in der Platzierung. Hier ist der vollständige Code:

[email protected]$_SERVER[HTTP_REFERER];
$domain = parse_url($ref, PHP_URL_Host);

If ($domain === "google.com") 
    {
        header('Refresh: 0; url=index.php'); //Resets header info to Host site so that on page refresh, the hit counter does not
    }                                        // increase but increases only when someone visits from google url again

Nach der "Aktualisierung" werden die Header-Informationen in die der Host-Site geändert. Bei der Seitenaktualisierung wird die "Wenn" -Anweisung nicht überprüft und der Trefferzähler wird nicht erhöht.

Sie können Ihren Trefferzähler in den IF-Block setzen. Sie können auch verschiedene Parameter programmieren, um leere Treffer auf Ihrer Website zu protokollieren, und verschiedene Parameter, um alle Seiten/Seitenaufrufe zu protokollieren.

Ich hoffe es hilft.....

1
Sumit

Ihre Annahme, auf den Referer-Header über Javascript zuzugreifen, ist nicht möglich. Genau wie der User-Agent-Header in http kann auf Verweise usw. nicht mit Javascript zugegriffen werden. Die Werte für diese Header werden vom Browser übermittelt. Was Sie tun können, ist eine knifflige Arbeit, wenn Sie es brauchen.

0
nibin012

Es gibt eine andere Methode: history.replace () - Methode , um die Abfragezeichenfolge auszublenden. Wenn Sie beispielsweise http://example.com/search?q=100 durch http://example.com/search ersetzen möchten, können Sie dies folgendermaßen tun:

history.replace(null,null,'search')

Hoffe das hilft! : D

0
Jack Chen
<meta name="referrer" content="no-referrer"/>

Wenn Sie den obigen Code auf Ihrer Seite einfügen, werden für alle ausgehenden Links (Klicks der Benutzer) keine Referrer-Informationen gesendet

Dokumentation

0
Jyoti Sandhiya