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/profileo/checkout?email=…fanno trapelare dati personali a network pubblicitari e tool di analytics. - Scoperta di path admin. Un click da
/admin/users/42a 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:
| Policy | Same-origin | Cross-origin | Cross-origin downgrade (https→http) |
|---|---|---|---|
no-referrer | niente | niente | niente |
same-origin | URL completo | niente | niente |
strict-origin | solo origin | solo origin | niente |
strict-origin-when-cross-origin (raccomandata) | URL completo | solo origin | niente |
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