Utilizzando nodejs e Crypto, in questo momento, quando un utente accede a, ho generano un caso token di autenticazione:Generazione token unici in un NodeJS, ambiente di autenticazione Crypto Token
var token = crypto.randomBytes(16).toString('hex');
So che è improbabile, ma non v'è una piccola possibilità che due token abbiano lo stesso valore.
Questo parametro può teoricamente essere autenticato da un altro account.
Ora, vedo due metodo ovvio per ottenere passare questo:
- Quando ho generare il token, interrogare il database degli utenti e vedere se un gettone con lo stesso valore già esiste. Se lo fa, genera semplicemente un altro. Come potete vedere, questo non è perfetto poiché sto aggiungendo query al database.
- Poiché ogni utente ha un nome utente univoco nel mio database, è possibile che
generi un token casuale utilizzando il nome utente come chiave di generatore segreta. In questo modo, non c'è modo di avere due token con lo stesso valore. Può lo crypto farlo? È sicuro?
Come lo faresti?
Hai appena mi ha dato un'altra idea ... quando l'utente entra, mi cercherà per il quale utente ha quel certo pedina .. se la query trova più di un risultato, basta fare di nuovo l'accesso per l'utente - in questo modo posso gestire anche lo scenario peggiore - cosa ne pensi? –
La possibilità che il tuo server generi casualmente una collisione tra token tra due utenti è molto inferiore alla possibilità che un utente malintenzionato motivato indovini un token di un altro utente. Se ritieni che il primo caso sia un potenziale problema, dovresti credere che il secondo caso sia più un problema e affrontarlo utilizzando più byte casuali. Se si ritiene che 16 byte siano sufficienti a impedire a un attaccante di forza bruta motivato di indovinare il token di un utente target, è necessario che i 16 byte siano sufficienti per impedire al server di generare una collisione. – AgentME
risposta stupefacente in generale a cripto – hauron