¿Qué es el Referer?

El campo de encabezado de petición HTTP/1.1 Referer contiene la URI del recurso desde el cual se realizó el vínculo al recurso solicitado. Esta información es enviada por el agente de usuario (user-agent) que normalmente es el navegador web pero pudiera ser también programas como cURL o wget, entre otros. El envío de esta referencia por el agente de usuario permite que el servidor de aplicaciones conozca desde donde está enlazando sus recursos con el objetivo de hacer comprobaciones de autenticación, caches, elaboración de estadísticas, etc.

En la RFC 2616, sección 14.36, puede encontrarse la descripción de Referer y en la sesión 15.1.3 se abordan consideraciones de seguridad que deben cumplir los agentes de usuario como por ejemplo no incluir el Referer cuando se pase de HTTPS a HTTP por los problemas de exposición de información sensible.

En la figura 1 aparece un ejemplo de encabezado HTTP. Podemos apreciar como el navegador web está informando al servidor de aplicaciones, mediante el Referer, que la solicitud del recurso foundation.min.css, se está realizando desde la portada de owaspbricks.

figura-1-ejemplo-de-referer

Figura 1. Ejemplo de Campo de encabezado de petición HTTP enviado por la aplicación web owaspbricks de la VM del proyecto BWA de OWASP.

No debemos confundirnos con el metadato HTML Referrer pues son cosas diferentes, este último se ocupa de especificar que valores va a contener el campo de encabezado  de petición Referer, según la política de Referrer de la W3C que apliquemos. Tampoco podemos confundirnos con el property Referrer del DOM cuyo objetivo es permitir el acceso al valor del Referer.

Seguro te has percatado que a veces escribo Referer y otras veces Referrer, la cuestión es que el campo fue nombrado Referer por una equivocación ortográfica y se quedó finalmente con ese nombre, los otros Referrer (metadato y property del DOM) vinieron después y tuvieron la suerte de ser implementados con el nombre correcto.

Si quieres saber cuál es el Referer que se envía cada vez que visitas una página web, puedes crear un marcador en Firefox y en la dirección simplemente inserta  javascript:alert(document.Referrer), en la figura 2 te muestro como se hace.

Posteriormente, cada vez que visites una página, verás cómo al dar clic sobre el marcador, mostrará un mensaje con la URL de la página anterior (Figura 3). Si el mensaje aparece en blanco puede significar dos cosas, la más común es que no llegaste a la página actual a través de un hipervínculo sino que simplemente escribirte la URL directamente en la barra de dirección del navegador. Por otra parte puede ser que la página anterior implementa una política de Referrer que anula esta información.

figura-2-marcador-para-conocer-el-referer

Figura 2. Creación de un marcador en Firefox para conocer el valor del Referer de la página actual.

figura-3-valor-del-referer

Figura 3. Valor del Referer que indica como la página example.com se alcanzó a través de Google.

El Referer, al igual que el ETag ha sido blanco de críticas por ser utilizados para afectar la privacidad de los usuarios. Mediante el Referer puede registrarse los hábitos de navegación de las personas a través de la recolección de los saltos realizados entre páginas, estableciéndose  patrones de comportamiento en Internet. Para Firefox existen diversos complementos que permiten que los usuarios tomen el control del Referer, permitiéndole incluso ocultarlo (figura 4).

figura-4-complementos-de-firefox

Figura 4. Complementos de Firefox relacionados con la gestión del Referer.

En una prueba de penetración es importante conocer cual es el Referer entre peticiones. Por ejemplo, en la prueba de seguridad OTG-AUTHN-001, descrita en el blog, es imprescindible saber el Referer para entender si las credenciales son enviadas a través de un canal seguro.

El Referrer spam es un tipo de ataque que se realiza con mucha frecuencia contra aplicaciones web legítima y se aprovecha del Referer para su ejecución. Mis estimados colegas y excelentes profesionales de la Dirección de Seguridad Informática de la UCI, la licenciada en Ciencias de la Computación Yailin Sánchez Borrell y el ingeniero en Ciencias Informáticas Dennis Barrera Pérez nos están preparando un artículo que será publicando en los próximos días sobre este particular.

Espero que te haya gustado la entrada y te pueda ayudar a fortalecer la seguridad en tus aplicaciones web. Yo por mi parte he disfrutado escribiéndola.

S4lud0s y h4st4 el próx1m0 p0st!!!

Anuncios

7 comentarios en “¿Qué es el Referer?

  1. Pingback: La OTG-AUTHN-001 de OWASP propone comprobar si las credenciales viajan sobre un canal encriptado | Behique Digital

  2. Pingback: Mis notas de cURL | Behique Digital

  3. Pingback: Apuntes sobre el Referer spoofing, el Referer spam y otros problemas de seguridad relacionados | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s