Come impedire l'aggiornamento di un token di accesso rubato

2

Lo scenario è: hai un token di aggiornamento che è valido per un periodo di tempo più lungo e un token di accesso che è valido per un periodo di tempo più breve.

Il setup: c'è un client, un application server e un server di autenticazione.

  • Il client memorizza il token di accesso.
  • Il server delle applicazioni memorizza il token di aggiornamento.
  • Il server di autenticazione distribuisce il token di aggiornamento + accesso.

Uno dei vantaggi è che un token di accesso rubato può essere utilizzato solo per il tempo in cui è valido.

Supponiamo che un hacker rubi il token di accesso che è valido per 30 minuti. Quando l'hacker effettua una richiesta con il token di accesso rubato valido ma scaduto dopo 30 minuti, il server dell'applicazione lo aggiorna con il token di aggiornamento, quindi l'hacker ottiene un nuovo token di accesso valido e non scaduto.

Come può essere evitato?

    
posta Arthur 11.05.2018 - 09:35
fonte

1 risposta

1

Per ottenere un nuovo token di accesso, il client deve inviare il token di aggiornamento al server. Quindi se l'attaccante ruba solo il token di accesso, non sarà in grado di eseguire il refreash. Per fare ciò, deve anche rubare il token di aggiornamento. Ora, se l'attaccante è in grado di rubare il token di accesso, probabilmente può afferrare anche il token refreash mentre è lì. Quindi forse questo non fa molta differenza per lo scenario del furto di token, ma volevo comunque indicarlo.

Dividendolo in un unico accesso e un token refreash non protegge dal furto. Questo non è quello per cui è stato progettato. Lo scopo della divisione è quello di consentire al server di revocare i token senza dover colpire il database su ogni singola richiesta.

Quindi come proteggete dal furto? Lo stesso modo in cui si farebbe con qualsiasi lato segreto del client, sia esso un ID di sessione o cosa no. Imposta una durata limitata (del token refreash, in questo caso), utilizza un buon TLS e forse includi alcune informazioni di geolocalizzazione nel token in modo da poter bloccare le richieste che provengono improvvisamente dall'altra parte del pianeta.

    
risposta data 11.05.2018 - 10:05
fonte

Leggi altre domande sui tag