Sto provando a mettere in atto alcune anomalie e sto guardando i dati dei referrer (so che questo è facoltativo e può essere risolto in alcune circostanze). Ma vedo troppi casi di quelli che ritengo essere falsi positivi.
Da rfc2616 :
The Referer[sic] request-header field allows the client to specify,
for the server's benefit, the address (URI) of the resource from
which the Request-URI was obtained
Prendo questo per indicare che il referente deve essere compilato solo quando la richiesta viene generata da un link, da una sottomissione modulo, da una richiesta Ajax o da un contenuto correlato esplicitamente contenente l'URL di destinazione. Ad esempio, se l'utente naviga sul mio sito utilizzando un segnalibro, un indirizzo inserito manualmente o tramite un altro sito di pagina (senza considerare la possibilità che questo possa inviare un reindirizzamento 30x), non dovrei vedere la pagina in cui si trovavano precedentemente.
Ma vedo un gran numero di casi in cui l'URL fornito come referrer non ha alcun link al mio sito. Inoltre, molti di questi referrer sono operazioni affidabili (incluse le grandi banche) che dovrebbero essere protette contro gli attacchi di tipo XSS, quindi è improbabile che i casi che vedo siano dovuti all'utente che accede a una pagina modificata.
Sono consapevole che ci sono molti problemi in sospeso su iPad e iPhone (CVE-2009-2797, CVE-2008-3171) che danno origine a questo comportamento (prima che iniziassi a filtrarli, ipad e iphone erano rappresentati in modo sproporzionato in l'output) tuttavia sto vedendo queste stranezze per MSIE, Firefox e 26, e molto occasionalmente Google Chrome.
Non sono stato in grado di replicare il comportamento su Firefox (stessa versione riportata dai miei dati di produzione) usando
- un semplice href (il riferimento è una pagina precedente)
- un modulo (sia GET che POST) (il referer è la pagina precedente)
- una modifica a window.location tramite javascript (il riferimento è una pagina precedente)
- un img ref (il riferimento è una pagina precedente)
- segnalibro (nessun riferimento)
- posizione inserita manualmente (nessun riferimento)
Non ho visto gli script di tipo Greasemonkey - qualcuno può consigliare se questi daranno origine a questo comportamento? Non vedo alcuna prova di pre-volo che implicherebbe un CORS.
C'è qualcos'altro che mi manca?