Phishing: consentire # nell'URL di reindirizzamento fornito dall'utente?

1

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:

  1. Non consentire stringhe con caratteri diversi da a-z0-9/=._-
  2. 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 invia https://www.evil.com e non sarebbe già bloccato dal passaggio 1, finirà come Location: 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?

    
posta Tim Strijdhorst 15.02.2018 - 12:30
fonte

1 risposta

4

Il # in un URI denota un identificatore di frammento . Questo non viene inviato al server e, pertanto, non può essere utilizzato per causare un reindirizzamento senza l'aiuto del lato client.

È che dovrebbe essere sicuro di ritornare a un utente, sarei più interessato al resto dell'URL che al frammento.

    
risposta data 15.02.2018 - 12:35
fonte

Leggi altre domande sui tag