Come si fa a falsificare HTTP_REFERER?
-
03-07-2019 - |
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.
- Come posso farlo in JavaScript (AJAX)?
- Posso farlo in ASP.Net?
TIA martinetti
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.; -])