What type of information would be risky to disclose via a referrer: header?
Qualsiasi tipo di informazione privata o sensibile non dovrebbe essere esposta a siti Web esterni - tutto dipende dalla tua applicazione. Le cose più comuni da considerare sono:
- ID sessione (a volte puoi vederli in parametri URL come? PHPSESSID = ....)
- ID utente / ID risorsa (possono fornire un suggerimento a terze parti su chi è esattamente l'utente)
- qualsiasi tipo di token sensibili come i tag CSRF , confermare i token di azione, account token di attivazione ecc.
- alcuni dati utente sensibili, ad es. termini di ricerca che ha usato sul tuo sito web.
Which is a better approach? Click to redirect, or HTTP 301/302 redirection
Il reindirizzamento 30x va perfettamente bene dal punto di vista tecnico in quanto perderà l'intestazione del Referer. Prendi in considerazione l'uso di un "clic per reindirizzare" se desideri informare i tuoi utenti sul verificarsi del reindirizzamento.
If a 301/302, or Javascript redirection to an external URL is used, what additional security precautions must be taken place?
Ad esempio, immagina che l'autore di un attacco configuri un sito di phishing con il design del tuo sito e un modulo di login falsificato e utilizzi il reindirizzamento aperto per indirizzare gli utenti nel suo sito Web, raccogliendo i loro accessi e password. Ad esempio, potrebbe inviare campagne di spam con gli URL che puntano al tuo script di reindirizzamento. È una vulnerabilità di sicurezza comune comunemente chiamata reindirizzamento aperto . La protezione click-through sarebbe migliore in questo senso in quanto gli utenti sarebbero informati del verificarsi del reindirizzamento, ma è molto meglio avere un processo di validazione manuale / semi-automatica dei target di reindirizzamento in modo da poter monitorare gli URL dannosi e bloccarli .
Non avrai mai un controllo totale sugli URL di destinazione perché ci sono molti modi in cui gli autori degli attacchi nascondono i tuoi contenuti dannosi, ma avere un processo pronto a bloccare gli URL indesiderati ti consentirà di sviluppare filtri migliori, la lista nera comune domini o implementare una funzione greylisting: per i buoni URL conosciuti un reindirizzamento 301, per noto male - 501, e per tutti gli altri - conferma dell'utente. Questo è ciò che Facebook fa più o meno.