Navegando más allá

Dejamos gran cantidad de información en Internet. Ya no sólo en transacciones comerciales o bancarias, en comentarios en blogs o en otros servicios de forma explícita, también mucha información de forma implícita por el sólo hecho de abrir el navegador web y darse una vuelta.

Aparentemente, pides una página a través de la barra de direcciones o siguiendo algún link y el servidor te devuelve el código html que construye la página. Pero de lo que no te das cuenta es de que tu navegador y el servidor están “cuchicheando” y se están pasando datos discretamente.

Estos datos son las cabeceras HTTP y hay dos tipos, lo que envías (request) y lo que el servidor te responde (response). La información que se pasa en condiciones normales es inócua; envías tu IP, navegador, sistema operativo, página de referencia, lenguaje… y el servidor te responde con su sistema operativo, cuándo expira la página, si hay algún error, etc… He preperado una página con esta información aquí.

Esta información, como decía, es teóricamente inofensiva, pero da pistas, tanto en el lado del servidor como en el lado del usuario, de la configuración. Por ejemplo, en los headers que este servidor envía al usuario, está el path en el servidor del grupo de archivos de la web (DOCUMENT_ROOT), un dato jugoso si algún hacker quiere hacerme un roto. Por el lado del “cliente” o “usuario” recibo información de qué navegador estás usando, que podría utilizar para explotar algunas vulnerabilidades del navegador (o para ajustar el diseño de la página a él, no seamos sólo el lado negativo).

Estas cabeceras son muy modificables. Tanto el cliente como el servidor pueden modificar y falsificar la información y hacer creer al servidor que soy el robot de Google o Yahoo! que voy a indexar las páginas, como por el lado del servidor decir que es Windows cuando realmente es un Linux.

Hay una extensión de Firefox, Modify Headers, que permite “falsificar” esta información. Para comprobarlo, tan sólo bastaría con añadir por ejemplo un HTTP_USER_AGENT distinto (se puede poner cualquier cosa) y ver el resultado en la página que he construido para ver los headers. En este ejemplo, para añadirlo en esta extensión, hay que omitir el “HTTP_”, hay que añadir sólo “USER_AGENT”.

Por lo tanto, desarrollar un servicio web que se base en esta información es potencialmente peligroso, ya que cualquier usuario puede falsificarse. Hay servicios, por ejemplo, que se basan en el HTTP_REFERER (no te dejo entrar en mi servicio si no vienes de una página determinada), y esto es falsificable. Otros pueden intentar limitar la entrada a lo usuarios pero permitírsela a los robots crawlers de los buscadores para que la indexen, pero como hemos visto, podemos identificarnos a nosotros mismos como uno de ellos sin mucha dificultad cambiando el HTTP_USER_AGENT.

Más:

http://www.cs.tut.fi/~jkorpela/http.html

http://en.wikipedia.org/wiki/Referrer

https://addons.mozilla.org/es-ES/firefox/addon/967

Also read...