← Todos los checks
SeguridadSeveridad típica: Bajo

Análisis de Referrer-Policy débil

Detecta una Referrer-Policy permisiva que filtra la URL completa de tu web a sitios externos.

Qué comprueba

Este escáner detecta si tu web tiene una Referrer-Policy permisiva que filtra la URL completa hacia sitios externos. Identifica cuando el navegador envía direcciones detalladas de tu web al visitar enlaces o cargar recursos de terceros.

Por qué importa

La URL completa puede contener información sensible, como identificadores de sesión, tokens o rutas privadas, que no querrías compartir con otros sitios. Una política permisiva hace que esos datos viajen a destinos externos cada vez que un usuario sale de tu web.

Cómo se arregla

Configura la cabecera Referrer-Policy con un valor más restrictivo, como strict-origin-when-cross-origin, que comparte solo el origen y no la ruta completa hacia sitios externos. Se define en la configuración del servidor o del CDN y suele ser un cambio sencillo y seguro.

Cómo funciona esta comprobación

Esta comprobación solo actúa si tu web ya envía la cabecera Referrer-Policy; si falta por completo, lo señala el escáner de cabeceras. Scanaris lee el valor y, si contiene unsafe-url o no-referrer-when-downgrade, abre un hallazgo de severidad baja con el valor exacto. Cualquier otro valor (strict-origin-when-cross-origin, no-referrer, same-origin, origin, strict-origin) se da por bueno. Es decir, no mide que tengas la cabecera, sino que la que tienes no filtre la URL completa.

Qué es el referer y qué se filtra

Cada vez que un usuario pulsa un enlace hacia otra web, o tu página carga una imagen o un script de otro dominio, el navegador envía al destino una cabecera Referer con la URL de la página desde la que viene. La política de referer decide cuánto de esa URL se envía. Con unsafe-url, la URL completa, con ruta y parámetros, incluso si el destino es HTTP. Con no-referrer-when-downgrade, la URL completa a cualquier destino HTTPS; era el comportamiento por defecto de los navegadores hasta 2020 y por eso sigue en muchas configuraciones antiguas. Lo que se filtra son cosas como /dashboard/facturas/8841, /reset-password?token=..., /buscar?q=despido o el identificador de un documento compartido: todo lo que haya en la URL del usuario llega a redes de anuncios, a servicios de analítica y a cualquier sitio externo al que enlaces.

Cómo arreglarlo

El valor recomendado para casi cualquier web:

Referrer-Policy: strict-origin-when-cross-origin

Envía la URL completa dentro de tu propio dominio (así tu analítica sigue funcionando), solo el origen (https://tudominio.com) a otros dominios, y nada si el destino es HTTP. Es el valor por defecto de los navegadores modernos, con lo que al ponerlo explícitamente solo estás fijando lo que ya hacen. Si no necesitas que nadie sepa de dónde viene el visitante, no-referrer es más estricto todavía.

  • Nuxt: en routeRules de nuxt.config, en la regla '/**'.
  • Next.js: en la función headers() de next.config.js.
  • Vercel: en vercel.json. Netlify: en _headers.
  • nginx: add_header Referrer-Policy "strict-origin-when-cross-origin" always;. Apache: Header always set Referrer-Policy "strict-origin-when-cross-origin".
  • Express: helmet.referrerPolicy({ policy: 'strict-origin-when-cross-origin' }).

Si algún enlace concreto necesita otro comportamiento (por ejemplo un programa de afiliados que exige el referer completo), ajústalo en ese enlace con el atributo referrerpolicy en lugar de relajar la política de toda la web.

Comprueba que está arreglado

curl -sI https://tudominio.com | grep -i referrer-policy

Debe mostrar strict-origin-when-cross-origin o no-referrer. Comprueba también que no haya una etiqueta <meta name="referrer"> en el HTML con un valor distinto: la meta tiene prioridad sobre la cabecera en esa página.

Preguntas frecuentes

¿Perderé datos en Google Analytics o en mi herramienta de estadísticas?

No. La analítica de tu propia web se alimenta del script que incluyes, no del referer. Lo que cambia es lo que ven las webs a las que enlazas: en lugar de la página exacta verán tu dominio. Para tus propias páginas internas, el referer completo se mantiene.

Mi web no tiene URLs con datos sensibles.

Hoy. Un enlace de restablecer contraseña, un identificador de pedido o un parámetro de búsqueda aparecen en cuanto la web crece. Fijar la política correcta cuesta una línea y no tiene efectos secundarios.

¿Por qué no-referrer-when-downgrade era el valor por defecto?

Porque en los primeros años de la web el referer completo se consideraba útil y HTTPS era minoritario. Chrome, Firefox y Safari cambiaron el valor por defecto a strict-origin-when-cross-origin entre 2020 y 2021 precisamente por las filtraciones que describe esta guía. Todas las cabeceras relacionadas las explica cabeceras HTTP para humanos.

Compruébalo en tu web

Escanea tu web gratis y mira si este y otros 44 checks pasan, con un prompt de arreglo por cada fallo.

Escanear mi web gratis

Del blog

Checks relacionados