E 'impossibile al fine di garantire in modo sicuro che un utente autorizzato non può falsificare una richiesta valida.
Dopo tutto, se il browser può creare una "richiesta valida", allora anche un utente autorizzato!
Tuttavia, questo è un requisito insolito, e sono interessato a sapere qual è la motivazione dietro di esso?
Esistono, tuttavia, diversi modi per rendere più difficile lo spoofing della richiesta.
Poiché nessun metodo sarà completamente sicuro, è possibile provare a offuscare e renderlo noioso per qualcuno per falsificare le vostre richieste.
Come altri hanno suggerito, è possibile creare un "token" casuale per sessione e richiederlo nell'URL (come percorso o come querystring).
Sarebbe ancora meglio usare JavaScript per questo. Rendi un input nascosto con questo "token". Quindi, intercettare l'evento click
di ciascun collegamento, aggiungere il valore "token" all'URL, quindi accedere all'URL.
È possibile migliorare il codice JavaScript per "processare" il token in qualche modo prima di utilizzarlo e ridurre il codice JavaScript per offuscarlo ... questo sicuramente scoraggerebbe anche gli utenti sopra la media dal modificare i propri URL.
Ci sono un sacco di soluzioni possibili, ma la soluzione "giusta" dipende molto dal comportamento specifico che si sta tentando di prevenire.
fonte
2011-12-01 08:55:42
Come "sicura" fa questo bisogno di essere? Vuoi solo impedire agli utenti di poter aggiungere ai segnalibri e/o digitare URL? O vuoi davvero renderlo sicuro contro le persone che sanno davvero come falsificare Javascript e i cookie? –
Voglio renderlo il più sicuro possibile, motivo per cui l'urlreferrer non è veramente adatto in quanto può essere facilmente falsificato – Duy
È questo per prevenire CSRF? O hai davvero bisogno di impedire anche agli utenti "autorizzati" di spoofing di richieste valide? –