attacchi di autenticazione basati su token

3

Il token Web JSON sembra essere un ottimo strumento per autenticare gli utenti. Ma mi chiedo se un attaccante può prendere il token usato da un altro utente e usarlo per i propri attacchi.
E per essere più precisi, ciò che rende questo metodo più sicuro.

    
posta Yazid 30.04.2015 - 17:13
fonte

2 risposte

2

Puoi impedire gli attacchi di riproduzione in JWT specificando le seguenti attestazioni nel tuo JWT: jti (identificativo univoco), exp (tempo di scadenza) e iat (tempo di creazione). La specifica JWT afferma chiaramente che è possibile utilizzare l'indicazione jti per impedire che un token JWT venga riprodotto. Dalla specifica:

The "jti" (JWT ID) claim provides a unique identifier for the JWT. The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object; if the application uses multiple issuers, collisions MUST be prevented among values produced by different issuers as well. The "jti" claim can be used to prevent the JWT from being replayed. The "jti" value is a case- sensitive string. Use of this claim is OPTIONAL.

    
risposta data 30.04.2015 - 19:46
fonte
1

In realtà c'era un recente difetto riscontrato nei JWT .

Se utilizzi node-jsonwebtoken, pyjwt, namshi / jose, php-jwt o jsjwt con chiavi asimmetriche (RS256, RS384, RS512, ES256, ES384, ES512) consentirà a un utente malintenzionato di creare il proprio "firmato" token con qualsiasi carico utile che desiderano, consentendo l'accesso arbitrario all'account su alcuni sistemi.

Se il JWT è memorizzato in un cookie, altri attacchi che sono possibili includono la maggior parte di quelli con i cookie in generale. Ad esempio, risoluzione della sessione o non utilizzare correttamente Secure o Solo HTTP flag. Fissazione meno probabile della sessione anche perché le JWT tendono ad includere il nome utente nella richiesta, tuttavia a seconda del sistema un tipo di attacco simile a login CSRF potrebbe essere possibile.

you include the jwt in the header of each request. so anyone who have this token with a valid expiration date can have access to ressources. am i right, or i'm misunderstanding the specs.

Questo dipende da cosa è incluso nel reclamo. Una data di scadenza valida a sé stante è inutile, deve includere anche un nome utente valido di cui la firma conferma non sia stata manomessa.

    
risposta data 01.05.2015 - 12:30
fonte

Leggi altre domande sui tag