Memorizzazione di OAuth e altri token di autenticazione

11

Sappiamo tutti che quando si memorizzano le password, dovremmo memorizzarle con un hash unidirezionale come una variante di SHA, bcrypt o scrypt per evitare perdite di password in testo normale quando il database viene violato.

Ma per quanto riguarda i token OAuth? Come si dovrebbe memorizzare un token di accesso a Facebook? Token di accesso Twitter? Dovrei memorizzarlo come testo normale? Criptalo con AES e una chiave del sito? O un modo più sicuro per memorizzarlo?

(A patto che l'applicazione abbia richiesto solo l'ambito token essenziale da Facebook e che l'app abbia buoni motivi per archiviare il token)

    
posta willwill 27.10.2012 - 19:21
fonte

1 risposta

2

Se possibile, non conservare i token OAuth! La memorizzazione dei token OAuth rende i tuoi utenti sensibili a un vettore di attacco di cui non sono a conoscenza.

Se è necessario memorizzare token OAuth, AES li crittografa con la chiave migliore che è possibile utilizzare per questo scopo. Se gli utenti utilizzano una password per accedere al sito, generare un codice AES basato sulla password di testo non crittografata di ciascun utente (ad esempio utilizzando PBKDF2) e crittografare il token OAuth di ciascun utente con la propria chiave AES.

Utilizza una chiave del sito solo come ultima risorsa se non esistono altre opzioni e fai del tuo meglio per proteggere la chiave del sito come da @ risposta di tylerl a Dove memorizzare una chiave per la crittografia? . Ma come ha scritto @tylerl, "non c'è una buona risposta".

Quindi, di nuovo, se possibile, non memorizzare i token OAuth!

    
risposta data 27.10.2012 - 22:42
fonte

Leggi altre domande sui tag