JSON Web Token Security

6

Ho lavorato con i Token Web JSON e ho letto come rendere un'app più sicura. Quando un utente è autorizzato, il token è firmato e un token verrà inserito nell'intestazione di autorizzazione. Questo token può quindi essere inserito in localStorage, sessionStorage o cookieStorage. L'ultima opzione è risultata essere l'opzione più sicura, ma mi chiedevo se alcune funzionalità di un token Web JSON o di qualsiasi middleware o forse JSON Web Encryption (non sono sicuro di come funzioni) che impedirebbero a un malintenzionato di attaccare intercettando / afferrando quel token e utilizzandolo per future richieste alle API dell'app, poiché tutto ciò che è necessario è una richiesta con quel token per un server stupido che risponde per le informazioni richieste.

    
posta My Name 19.11.2015 - 02:39
fonte

2 risposte

2
  1. Invia il token su TLS.
  2. Firma il token con un paio di chiavi private / pubbliche (ad esempio RSA, ECDSA) per impedire la manomissione (non usi una condivisione segreta!).
  3. Se il tuo token viene rubato, l'attaccante può usarlo solo per un breve periodo di tempo. Puoi impostare il tempo di scadenza su 15 minuti.
  4. JSON Web Encryption (JWE) garantisce la riservatezza dei contenuti. È possibile utilizzare la crittografia asimmetrica per inviare contenuti riservati. Vedi questo esempio .
risposta data 23.11.2016 - 09:49
fonte
2

Protezione delle credenziali dell'utente - Cookie di sessione vs. JWTs:  - Implementa HTTPS sul tuo server e il modulo di accesso viene pubblicato su questo canale sicuro  - Archivia l'ID di sessione in un cookie sicuro, HTTPS-only che può essere inviato al tuo server solo su canali sicuri  - Prevenzione del codice dannoso (XSS): Non utilizzare Archiviazione locale  - Utilizzo dei token Web JSON per proteggere l'interfaccia utente dell'applicazione Web: 3 parti:

Header:
{
"typ":"JWT",
"alg":"HS256"//ALGORITHM HS256 are specifically designed to PREVENT alteration of the payload
}

JWT: should be signed with a private signing key
Body:
{
"iss":"your site"//Who issued this token,
"exp": //timestamp,//set the good expiration time
"sub": "users/105898"//user ID,
"scope": "self api/comment"//What this user can do
}

Note:

  • Quando convalida un JWT in entrata, fai attenzione a ciò che consideri valido
  • Se la libreria JWT cambia abbastanza, la libreria che stai utilizzando potrebbe dover cambiare in modo da compromettere la compatibilità con il tuo codice. Segui link
risposta data 22.12.2016 - 22:15
fonte

Leggi altre domande sui tag