¿Cómo se falsifica HTTP_REFERER?
-
03-07-2019 - |
Pregunta
Debo intentar y falsificar el HTTP_REFERER pasado mi otra página para que en la página de destino, puedo determinar si la solicitud viene desde la parte " derecha " página y realizar la lógica adecuada.
- ¿Cómo hago eso en JavaScript (AJAX)?
- ¿Puedo hacer eso en ASP.Net?
TIA carneros
Solución
En términos generales, no puede hacer que otros navegadores devuelvan un HTTP_REFERER falso sin un exploit, un complemento u otra extensión. Si desea modificar el valor enviado desde su navegador web y está utilizando FireFox, consulte la extensión Modify Headers .
En cualquier caso, nunca debes confiar en que HTTP_REFERER sea preciso. No hay garantía de que el HTTP_REFERER que recibas no sea falso o simplemente no se envíe.
Otros consejos
Si desea probar en la página de destino si una solicitud proviene de " derecha " página, no es necesario falsificar la referencia. Todo lo que necesita hacer es emitir la solicitud desde una página diferente. Configura una página con una URL diferente de la que consideras que " derecha " uno, y emitir solicitudes desde allí, ya sea haciendo clic en un enlace a la página de destino o colocando una imagen procedente del destino.
Ya se ha mencionado que realmente no puedes falsificar cosas. Pero para aclarar, el encabezado HTTP_REFERER es generado por el navegador , por lo que en el lado del servidor no puedes controlarlo (incluidas las cosas que se transfieren de javascript, que pueden o no estar habilitadas). / p>
Si solo desea probar la respuesta de su página a ciertos encabezados (como " Referer: "), puede usar herramientas de línea de comandos como curl o wget que están disponibles en la mayoría de BSD y variantes de Linux (incluido OS / X). Si está utilizando MS Windows, puede obtener curl o wget utilizando Cygwin .
wget -O - --referer="http://example.com/some/path" http://example.com/
o
curl -e "http://example.com/some/path" http://example.com/
Pero su razón principal para hacer esto es aparentemente para " proteger " Una página, creo. Si realmente desea asegurarse de que una página (llámela " B ") solo se visita después de visitar otra página (" A ") primero, entonces necesita una lógica más compleja en el lado del servidor.
Si está almacenando una cookie de sesión, puede incrustar algo de lógica en la página " A " que establece una variable booleana. A continuación, agregue la lógica en la página " B " que verifica que la variable se haya establecido.
Lo dejaré como un ejercicio para que el lector descubra cómo hacer esto en ASP.NET. (Porque soy un programador de PHP. - -])