Domanda

Devo provare a falsificare l'HTTP_REFERER passato un'altra mia pagina in modo che nella pagina di destinazione, sia possibile determinare se la richiesta proviene da " right " pagina ed eseguire la logica appropriata.

  1. Come posso farlo in JavaScript (AJAX)?
  2. Posso farlo in ASP.Net?

TIA martinetti

È stato utile?

Soluzione

In generale, non è possibile far sì che altri browser restituiscano un falso HTTP_REFERER senza exploit, plug-in o altra estensione. Se vuoi modificare il valore inviato dal tuo browser web e stai usando FireFox, guarda l'estensione Modifica intestazioni .

In ogni caso, non dovresti mai fare affidamento sulla precisione di HTTP_REFERER. Non vi è alcuna garanzia che HTTP_REFERER ricevuto non sia falso o semplicemente non inviato.

Altri suggerimenti

Se vuoi testare nella pagina di destinazione se una richiesta proviene da " right " pagina, non è necessario falsificare il referrer. Tutto quello che devi fare è inviare la richiesta da un'altra pagina. Imposta una pagina con un URL diverso da quello che ritieni " giusto " uno, ed emettere richieste da lì, facendo clic su un collegamento alla pagina di destinazione o inserendo un'immagine proveniente dalla destinazione.

È già stato menzionato il fatto che non puoi davvero falsificare le cose. Ma per chiarire, l'intestazione HTTP_REFERER viene generata dal browser , quindi sul lato server delle cose non è possibile controllarla (comprese le cose che passano javascript, che possono essere abilitate o meno).

Se vuoi solo testare la risposta della tua pagina a determinate intestazioni (come " Referer: "), puoi usare strumenti da riga di comando come curl o wget che sono disponibili nella maggior parte di BSD e varianti di Linux (incluso OS / X). Se stai usando MS Windows, puoi fare curl o wget usando Cygwin .

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

o

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

Ma il tuo motivo principale per farlo è apparentemente quello di "proteggere". una pagina, penso. Se vuoi davvero assicurarti che una pagina (chiamala " B ") sia visitata solo dopo che è stata visitata prima un'altra pagina (" A "), allora hai bisogno di una logica più complessa sul lato server.

Se stai memorizzando un cookie di sessione, puoi incorporare un po 'di logica nella pagina " A " che imposta una variabile booleana. Quindi aggiungi la logica nella pagina " B " che verifica che la variabile sia stata impostata.

Lascio che sia un esercizio per il lettore capire come farlo in ASP.NET. (Perché sono un programmatore di PHP.; -])

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top