privacy

Imposta una Referrer-Policy stretta

MetricSpot cerca un header Referrer-Policy. Senza, ogni click in uscita fa trapelare l'URL completo — inclusi token, PII e path admin — a siti terzi.

Cosa controlla questo check

Ispeziona gli header di risposta per una direttiva Referrer-Policy e verifica che il valore sia una delle policy più sicure: strict-origin-when-cross-origin (il default moderno dei browser), strict-origin, same-origin, no-referrer o no-referrer-when-downgrade. Il check fallisce quando l’header è mancante o impostato a una policy che fa trapelare (unsafe-url, origin-when-cross-origin senza strict-).

Perché è importante

L’header di richiesta Referer (sì, scritto male nell’RFC originale e ce lo siamo tenuti) dice a ogni sito su cui clicchi da quale URL provieni. Senza una policy, il browser invia l’URL completo — inclusi path, query string e fragment.

È un buco di privacy più grande di quanto la maggior parte delle persone si renda conto.

  • Fuga di token. Link di reset password, URL di magic-login, callback OAuth e URL “condividi con questo link privato” portano tutti segreti nel path o nella query. Ogni risorsa esterna sulla pagina (analytics, font, script di terze parti, immagini incorporate, link in uscita) riceve l’URL completo come Referer.
  • Fuga di PII. URL come /users/jane-patel@example.com/profile o /checkout?email=… fanno trapelare dati personali a network pubblicitari e tool di analytics.
  • Scoperta di path admin. Un click da /admin/users/42 a un’immagine esterna pubblicizza silenziosamente l’esistenza di /admin/ a ogni servizio esterno.
  • Esposizione GDPR. Inviare PII a un network pubblicitario USA senza consenso è una violazione GDPR a prescindere dall’intento. Una referrer policy stretta è una mitigazione economica.

I browser moderni (Chrome 85+, Firefox 87+, Safari 14+) spediscono strict-origin-when-cross-origin come default, ma solo quando la pagina non restituisce alcuna policy. Browser più vecchi e casi limite (origin file://, navigazioni http→http) continuano a far trapelare a meno che tu non imposti un header esplicitamente.

Come risolvere

Scegli una delle policy sicure e impostala negli header di risposta:

PolicySame-originCross-originCross-origin downgrade (https→http)
no-referrernientenienteniente
same-originURL completonienteniente
strict-originsolo originsolo originniente
strict-origin-when-cross-origin (raccomandata)URL completosolo originniente

strict-origin-when-cross-origin è il default moderno: le tue navigazioni interne ottengono URL completi (utili per analytics), i link esterni ottengono solo l’origin (https://example.com/), e i downgrade a HTTP non inviano nulla.

nginx:

add_header Referrer-Policy "strict-origin-when-cross-origin" always;

Apache:

Header always set Referrer-Policy "strict-origin-when-cross-origin"

Caddy:

header Referrer-Policy "strict-origin-when-cross-origin"

Cloudflare — Rules → Transform Rules → Modify Response Header, imposta globalmente.

Next.js (next.config.js):

module.exports = {
  async headers() {
    return [{
      source: "/(.*)",
      headers: [
        { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
      ],
    }];
  },
};

Express con Helmet:

import helmet from "helmet";
app.use(helmet.referrerPolicy({ policy: "strict-origin-when-cross-origin" }));

Override per-link. Se un link specifico ha bisogno di un comportamento di referrer diverso, usa l’attributo referrerpolicy su <a> o <img>:

<a href="https://partner.example.com/" referrerpolicy="no-referrer">Partner</a>

Verifica tu stesso:

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

Aspettati una singola riga con la policy che hai scelto. Se grep non restituisce nulla, l’header è mancante.

Domande frequenti

Questo romperà i miei analytics?

No, finché i tuoi analytics sono same-origin (girano sul tuo dominio) o self-hostati. I tool di analytics cross-origin che dipendono da URL completi di referrer (alcuni tool di attribuzione) potrebbero vedere meno dati con strict-origin-when-cross-origin, ma ottengono comunque l’origin — di solito sufficiente per attribuire la visita.

Dovrei usare no-referrer per essere il più sicuro possibile?

no-referrer è la più sicura ma rompe molti flussi legittimi: i gateway di pagamento spesso controllano il referrer per confermare che un checkout abbia origine da un sito merchant reale; i provider OAuth a volte loggano il referrer per la rilevazione frodi; gli analytics si rompono. strict-origin-when-cross-origin è il default giusto.

Influisce sulla SEO?

No. I motori di ricerca non leggono la referrer policy. L’header influisce solo sui click in uscita e sul caricamento di risorse. Lato SEO è neutrale; lato privacy è un upgrade significativo.

Fonti

Ultimo aggiornamento 2026-05-11