La mia pagina di login accetta il parametro "return", che dovrebbe contenere URI per reindirizzare l'utente se non era loggato e ha provato ad accedere alla pagina che non è accessibile da utenti non autenticati. Potrebbe essere qualsiasi cosa dal mio sito.
Come faccio a controllare correttamente quel parametro nel mio codice server, prima di restituire lo stato HTTP 302 con quell'URI all'utente dopo che si è autenticato correttamente nella pagina di accesso?
È sufficiente controllare che uri[0] == '/' && uri[1] != '/'
(quindi l'utente malintenzionato non invierà una richiesta come /login?return=http://google.com
)?
Può un utente malintenzionato costruire un uri complicato che invierà l'utente vittima a problemi? Naturalmente presumo che le altre pagine non contengano vulnerabilità XSS, la richiesta GET non modifica nulla nel database, ecc.
Se un utente malintenzionato può ingannare la vittima per fare clic sul suo collegamento e l'utente vittima è già connesso, le cose accadranno comunque e non posso fare nulla per impedirlo, tranne implementare misure di sicurezza conosciute come la protezione CSRF, ecc. .