Attualmente sto lavorando su un'applicazione che richiede l'autenticazione per alcune pagine. Per essere gentili con i nostri utenti, forniamo la possibilità di specificare un url di reindirizzamento al quale l'utente viene restituito dopo aver effettuato l'accesso.
Per evitare la vulnerabilità di reindirizzamento aperto vogliamo assicurarci che questo URL sia interno.
In questo momento facciamo quanto segue:
- Non consentire stringhe con caratteri diversi da
a-z0-9/=._-
- Inserisci sempre il nostro URL di base completo (
https://www.example.com/
) prima che l'utente abbia fornito il contenuto. Pertanto, anche se l'utente ci inviahttps://www.evil.com
e non sarebbe già bloccato dal passaggio 1, finirà comeLocation: https://www.example.com/https://www.evil.com
.
Tuttavia, a causa delle funzionalità di frontend richieste, vorremmo includere #
come carattere autorizzato nel passaggio 1.
Un esempio sarebbe quindi:
Location: https://www.example.com/totally-relative-url#magic-that-leads-to-external-redirect
.
Questo apre qualsiasi possibilità per i reindirizzamenti aperti?