Stai sviluppando questo software?
Vorrei solo generare un token univoco memorizzato nel database come:
- TokenId
- UserId (o qualche entità a cui questo token si riferisce.)
- TokenKey (che verrà utilizzato come identità per il pubblico.)
- IsExpired
- Ip (che è un hash come SHA512 quindi non espone l'IP dell'utente se compromesso).
- createdOn
- UsedOn
Ora, dobbiamo ridurre il rischio di furto di token.
Quindi, iniziamo con IP. Se l'IP non corrisponde ai proprietari di token, ti consigliamo di disabilitare il ladro di token perché non corrisponde all'IP del proprietario. O un approccio più aggressivo sarebbe quello di far scadere il token in quanto il computer deve essere stato compromesso per ottenere l'accesso a quel token. È possibile inviare altre informazioni, ad esempio una chiave basata su serie seriali hardware e così via, ma ovviamente è facile falsificare.
Se il token è scaduto, dovranno eseguire nuovamente l'autenticazione e ottenere un nuovo token.
Modifica per la memorizzazione locale delle password:
Oops, devo frainteso il tuo post. Quando ho letto il tuo post sui token delle password ho pensato che fosse quello che stavi cercando. La crittografia per una password è sempre un no-no. Utilizzare solo la crittografia quando si deve decrittografare i dati sensibili. Per le password, ti consigliamo di utilizzare hash come SHA512. Ci sono molti compromessi (dimensioni, velocità, ecc.) Sugli hash ma ci sono post che spiegano tutte le differenze.
Metodi per rubare l'hash:
- La persona con accesso fisico o remoto alla cartella potrebbe ottenere l'accesso alla tua password.
- Uno sniffer di rete come Cain potrebbe ottenere password attraverso la rete.
Quindi, salvare localmente una password sta davvero riducendo la sicurezza del tuo software a scapito della comodità dell'utente.