2009-03-05 6 views
3

Ich muss versuchen, den HTTP_REFERER, der meine andere Seite übergeben hat, zu fälschen, damit ich auf der Zielseite feststellen kann, ob die Anfrage von der "richtigen" Seite kommt und die entsprechende Logik ausführt.Wie spooft man HTTP_REFERER?

  1. Wie mache ich das in JavaScript (AJAX)?
  2. Kann ich das in ASP.Net tun?

TIA Widder

Antwort

9

Im Allgemeinen können Sie keine anderen Browsern verursachen eine falsche HTTP_REFERER ohne ausnutzen, Plug-in oder eine andere Erweiterung zurückzukehren. Wenn Sie den Wert ändern möchten, der von Ihrem Webbrowser gesendet wird und Sie FireFox verwenden, sehen Sie sich die Erweiterung Modify Headers an.

In jedem Fall sollten Sie sich niemals darauf verlassen, dass HTTP_REFERER korrekt ist. Es gibt keine Garantie, dass der HTTP_REFERER, den Sie erhalten, nicht gefälscht oder einfach nicht gesendet wird.

+0

danke für den Link. Ich werde das überprüfen. – rams

+1

Wenn Sie die Chrome [ModHeader] (https://chrome.google.com/webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj) Erweiterung verwenden, machen Sie den Job! – GiDo

2

Wenn Sie auf der Zielseite testen möchten, ob eine Anfrage von der "richtigen" Seite kommt, müssen Sie den Referrer nicht vortäuschen. Alles, was Sie tun müssen, ist die Anfrage von einer anderen Seite aus zu stellen. Richten Sie eine Seite mit einer anderen als der von Ihnen als "richtig" bezeichneten URL ein, und geben Sie von dort aus Anfragen ab, indem Sie entweder auf einen Link zur Zielseite klicken oder ein Bild aus dem Ziel hinzufügen.

+0

Die aufrufende Seite stammt von einer Client-App, auf die ich keinen Zugriff habe. Anstatt also im Dunkeln zu kodieren, muss ich den Referrer "spoofen" und meine Seite testen. – rams

+0

@Rob, warum sagst du ihm "du musst den Referrer nicht spoofen"? Das scheint irrelevant zu sein, denn er fragt * wie * kann der Werber gefälscht werden. – Pacerier

+0

@Pacerier, er fragt: "Wie kann ich das Problem X lösen, indem ich Y mache?"Meine Antwort ist, dass er Y nicht wirklich tun muss, um X zu lösen. In diesem Fall soll X testen, dass die Seite den Referrer erkennen kann; Y soll den Referrer spoofen. –

2

Es wurde bereits erwähnt, dass man nicht wirklich Dinge spoofen kann. Aber um zu klären, der HTTP_REFERER-Header wird generiert durch den Browser, so auf der Serverseite von Dingen, die Sie nicht kontrollieren können (einschließlich Dinge, die Javascript ausliefern, die möglicherweise aktiviert sind oder nicht).

Wenn Sie die Antwort Ihrer Seite auf bestimmte Header (wie „Referer:“) nur testen wollen, können Sie Befehlszeilen-Tools wie curl oder wget die in den meisten BSD und Linux-Varianten zur Verfügung stehen verwenden (einschließlich OS/X). Wenn Sie MS Windows verwenden, können Sie curl oder wget mit Cygwin abrufen.

wget -O - --referer="http://example.com/some/path" http://example.com/ 

oder

curl -e "http://example.com/some/path" http://example.com/ 

Aber Ihr Kern Grund, dies zu tun ist offenbar zu „schützen“, um eine Seite, glaube ich. Wenn Sie wirklich sicherstellen wollen, dass eine Seite (nennen wir sie "B") nur besucht wird, nachdem zuerst eine andere Seite ("A") besucht wurde, dann benötigen Sie eine komplexere Logik auf der Serverseite.

Wenn Sie einen Sitzungscookie speichern, können Sie auf der Seite "A" eine Logik einbetten, die eine boolesche Variable festlegt. Fügen Sie dann Logik auf Seite "B" hinzu, die überprüft, um sicherzustellen, dass die Variable festgelegt worden ist.

Ich werde es als eine Übung für den Leser, um herauszufinden, wie dies in ASP.NET zu tun. (Weil ich ein PHP-Programmierer bin.; -])

+0

Warum sagen Sie diesen Verweis? Überprüfung kann nicht sicherstellen, "Seite B läuft Logik nur nach Seite A besucht wird"? – Pacerier

+0

Das ist nicht das, was ich sagte.Wenn Sie ein Cookie verwenden, können Sie sicherstellen, dass der Cookie durch einen Besuch auf Seite A festgelegt wird, und dann B überprüfen kann Für diesen Cookie wird der HTTP_REFERER vom Browser generiert, so dass er nicht vertrauenswürdig ist. – ghoti

Verwandte Themen