2009-03-12 25 views
5

Sto cercando di aggiungere funzionalità "ricordami" a un sito Web utilizzando un cookie con il nome utente dell'utente e un token, che viene anche memorizzato in un database crittografato. La mia domanda è: quanto dovrebbe durare questo token? One website I read ha detto 128 bit, che nel mio modo di pensare è di 16 caratteri. Non sono troppo preoccupato per i duplicati in quanto anche 16 caratteri di un set di caratteri di 256 caratteri forniscono un numero enorme di possibilità e la possibilità di duplicati allo stesso tempo è minima.Per quanto tempo dovrebbe essere un token "ricordami"?

Quanto deve durare il token? (Non mi sto chiedendo come generare il valore o quanto sia unico.)

+0

È possibile fornire un collegamento al sito Web menzionato nella domanda. Stai chiedendo quanto a lungo dovrebbe essere il valore memorizzato nel cookie o come dovresti generare quel valore e cosa dovrebbe riguardare anche tu? –

+0

Rivisitata la domanda e aggiunto il link al sito web. –

+0

Perché hai bisogno di sapere qual è la lunghezza "giusta"? Non c'è proprio qui. Come fai a non interessarti a come generarlo, ma a preoccuparti della lunghezza? Sono strettamente correlati. – jmucchiello

risposta

1

Penso che dipenda più da come il valore è randomizzato da quanto tempo è. Un hash a 256 bit non è affatto sicuro se si tratta solo di un hash di qualcosa che può essere facilmente indovinato o ristretto come un ID univoco basato sul tempo.

Tuttavia, come hai detto, non stai chiedendo specificamente come renderlo abbastanza casuale.

Una stima di 2^80 (o più) operazioni necessarie per rompere qualcosa è di solito una buona misura. Ciò implicherebbe che un hash a 80 bit sia sicuro. (Se tu fossi vulnerabile agli attacchi di compleanno, avresti bisogno di raddoppiare quello cioè 160 bit, ma non penso che questa situazione si applica).

Personalmente, per questo scopo utilizzo gli hash a 256 bit. Quando codificati in Base64, comprimono solo fino a 43 caratteri di lunghezza, tutti i caratteri stampabili. Immagino che, anche se è molto più di quello che mi serve, non è un grosso problema averli così a lungo.

+0

Umm, un GUID non può essere facilmente indovinato o ridotto nella maggior parte delle situazioni. –

+0

Ok, modifico la risposta. – thomasrutter

7

Basta usare un GUID. Molti database li supportano come un tipo nativo; sono facili da manipolare nella maggior parte dei linguaggi/framework più diffusi; traducono perfettamente da una piattaforma all'altra; e every one is unique.

+0

Scusa, immagino che non fosse chiaro. Mi sto chiedendo la lunghezza. –

+0

Un GUID implica una lunghezza, ovvero i 128 bit/16 caratteri menzionati nella domanda. – chaos

+0

Sto cercando la lunghezza che dovrebbe essere. 16 è la lunghezza corretta? –

0

Si può sempre osservare ciò che altri hanno fatto, come Oauth2 che suggerisce che il token sia compreso tra 128 e 160 bit e faccia lo stesso. Mi piace lo this post, che dice che 122 bit dovrebbero essere adeguati "per la maggior parte degli scopi, inclusi i codici di lancio per i missili nucleari". Che è divertente se credi al codice di avvio effettivo may have been 00000000 for 20 years. Tanto per la sicurezza dei nostri token a 160 bit.

Problemi correlati