Protezione di una pagina di accesso secondaria per l'immissione di un token di autenticazione a più fattori

1

Vorrei implementare il seguente caso d'uso:

  1. L'utente atterra sulla pagina di accesso
  2. L'utente invia le credenziali di accesso
  3. Le credenziali vengono convalidate e vengono reindirizzate a un'altra pagina per l'immissione del token di autenticazione a più fattori
  4. L'utente invia il token di autenticazione a più fattori
  5. Il token è validato e l'utente viene reindirizzato nell'applicazione

La mia domanda riguarda le fasi 3-5 - Qual è il metodo consigliato per tenere traccia di questo utente dopo aver inserito il nome utente / password ma prima di aver inserito il proprio token di autenticazione a più fattori. Per convalidare il token deve esserci un modo per sapere quale utente sta facendo la richiesta. Deve anche esserci un modo per impedire agli attaccanti di saltare la parte Username / Password del processo.

Qual è il modo consigliato per risolvere questo problema?

    
posta theycallmemorty 27.04.2015 - 15:21
fonte

3 risposte

3

Utilizza un cookie di sessione per tenere traccia degli utenti durante tutto il processo di autenticazione, proprio come avresti dopo l'autenticazione.

Assicurati che la lunghezza del tuo cookie e complessità sono sufficienti per resistere agli attacchi di forza bruta e spoofing. Utilizza sicuro e link attributi per impedire ai cattivi di catturarli e utilizzarli.

Utilizza un cookie per la verifica prima dell'autorizzazione, quindi rinnova l'ID di sessione dopo il secondo passo, che è un cambiamento di privilegio.

Questa è una di quelle cose in cui i problemi sono stati scandagliati e le migliori pratiche esistono per prescrivere ciò che dovresti fare: leggi, comprendi e segui Scheda Cheat di OWASP Session Management .

    
risposta data 27.04.2015 - 15:46
fonte
2

Dovresti avere cookie di sessione . La maggior parte dei framework web ha un supporto utile per questo.

Ma da un punto di vista della sicurezza, c'è un problema importante.

L'uso dei cookie di sessione (per differenziare i browser che utilizzano il tuo sito) e le credenziali di accesso (per differenziare gli utenti del tuo sito) raddoppiano efficacemente le funzionalità di autenticazione del tuo sistema. Quindi emerge una nuova possibilità di attacco, basata sulle interazioni impreviste tra i due.

I due tipi di attacco più banali potrebbero essere:

  1. Se un utente si disconnette e quindi effettua di nuovo l'accesso, si avrà lo stesso ID di sessione, ma con un altro utente. Ad esempio, disconnettersi come utente moderatore e quindi accedere a un utente normale, potrebbe consentire al secondo di utilizzare i privilegi del moderatore del login precedente.
  2. I cookie saranno quasi tanto importanti come le password, ma non sono nemmeno così strettamente sorvegliati. Un cookie rubato può rendere possibile "rubare" efficacemente l'account a cui appartiene.

Così,

  1. Utilizza https.
  2. Utilizza un timeout rapido dei cookie.
  3. Dopo un logout, rimuovi la validità del cookie di sessione.
  4. Cerca di utilizzare il minor numero possibile di variabili associate alla sessione.
risposta data 27.04.2015 - 15:41
fonte
1

Utilizzerei un token di sessione non privilegiato tra i due passaggi, a dimostrazione che questo utente ha terminato la prima parte dei processi di autenticazione multistadio, ma questo lo lascia non autenticato (non privilegiato).

Quindi, dopo il completamento della seconda fase, rigenerare un token di sessione ed eseguire l'escalation dei privilegi dell'utente su "autenticato" (o su qualsiasi cosa che si adatti alla matrice di controllo degli accessi).

Consentire l'accesso al secondo stadio solo se si dispone di un token che conferma che il primo stadio è stato completato. Altrimenti, reindirizza l'utente al primo livello.

Potresti dare un'occhiata al foglio di trucchi di autenticazione OWASP per alcune buone linee guida: link

    
risposta data 27.04.2015 - 15:34
fonte

Leggi altre domande sui tag