viernes, 15 de enero de 2016

Cabeceras en comunicaciones HTTP con cURL

Aparte del contenido HTML que se transfiere durante una consulta a un sitio web, también se transmite otra información en forma de cabeceras, que no son más que pares del tipo "valor: resultado". Estas cabeceras normalmente no se muestran al usuario que está visitando el sitio web, pero el navegador sí que las recibe, pudiendo ignorar algunas y utilizar otras, según le interese. Es interesante echar un vistazo a esta información que, en principio, no se ve.

Echando un vistazo a lo que no se ve
Imagen: Lector con lupa, Lesser Ury. Fuente: wikipedia.

Con curl podemos ver las cabeceras que nos está enviando un servidor web usando la opción -I. Por ejemplo, para ver las cabeceras que envía el servidor de la RAE:

Fig. 1. Cabeceras del servidor web de la RAE

Como se puede ver en la Fig. 1, una de las cabeceras se llama Server. En el caso de la RAE, el valor es Apache, lo cual nos puede llevar a pensar que la RAE utiliza como servidor web Apache.

Digo "nos puede llevar a pensar" porque esto no es necesariamente así. Al fin y al cabo, el administrador del servidor web puede configurarlo para que devuelva en esa cabecera cualquier cadena de texto que quiera.

Algunos administradores, por motivos de seguridad, prefieren no informar a los visitantes del servidor web que utilizan, por ponérselo un paso más difícil a los hackers (esta técnica de ocultación tampoco contribuye demasiado, la verdad, pero algo es algo). Otros dejan tan sólo el nombre del servidor web y eliminan los números de versión (informar del nombre y versión del servidor web suele ser la opción configurada por omisión). Así, al menos, intentan dificultar que un hacker pueda explotar alguna vulnerabilidad conocida que sea específica de esa versión del servidor web o del motor de PHP, de ASP...

En este caso, podemos comprobar que el administrador del servidor web de la RAE ha eliminado la versión de la cadena que describe el servidor Apache (suponiendo que sea ese el servidor real, lo cual asumiremos por el momento).

Otras veces, en las cabeceras podemos encontrar si el servidor está utilizando PHP, ASP u otras tecnologías, incluyendo el número de versión:

Fig. 2. Cabeceras del servidor web de Endesa indicando que utiliza IIS en 
su versión 7.0 y ASP.NET (sin indicar número de versión)

Pero recordad, dado que lo que se devuelve es una cadena de texto libremente modificable, también puede darse el caso, siendo un poco más retorcido, de que se esté informando de un número de versión erróneo, a fin de despistar al visitante. Así que no conviene, como decía Microsoft en un anuncio, asumir que "por llamarse Mercedes, eso signifique que sea un coche".




Related Posts Plugin for WordPress, Blogger...