2009-03-12 47 views
5

Estoy tratando de agregar la funcionalidad "recordarme" a un sitio web utilizando una cookie con el nombre de usuario del usuario y un token, que también se almacena cifrado en una base de datos. Mi pregunta es cuánto tiempo debe ser este token? One website I read dijo 128bit, que en mi opinión es de 16 caracteres. No estoy demasiado preocupado por los duplicados, ya que incluso 16 caracteres de un juego de caracteres de 256 caracteres ofrecen una gran cantidad de posibilidades y la posibilidad de duplicar al mismo tiempo es escasa.¿Cuánto tiempo debe durar un token de "recordarme"?

¿Cuánto tiempo debe durar el token? (No me pregunto cómo generar el valor o cómo único.)

+0

Puede proporcionar un enlace al sitio web que menciona en su pregunta. ¿Estás preguntando cuánto tiempo debería durar el valor almacenado en la cookie o cómo debes generar ese valor y con qué debería relacionarse también? –

+0

Se corrigió la pregunta y se agregó un enlace al sitio web. –

+0

¿Por qué necesita saber cuál es la longitud "correcta"? No hay derecho aquí. ¿Cómo no te importa cómo generarlo, pero te preocupa su longitud? Ellos están estrechamente relacionados. – jmucchiello

Respuesta

1

Creo que depende más de cómo se aleatoriza el valor que el tiempo que es. Un hash de 256 bits no es seguro en absoluto si solo se trata de un hash de algo que puede adivinarse o restringirse fácilmente, como una ID única basada en la hora.

Sin embargo, como ha dicho, no está preguntando específicamente sobre cómo hacerlo al azar.

Un estimado de 2^80 (o más) operaciones requeridas para romper algo es generalmente una buena medida. Esto implicaría que un hash de 80 bits es seguro. (Si fueras vulnerable a los ataques de cumpleaños, necesitarías el doble, es decir, 160 bits, pero no creo que se aplique esta situación).

Personalmente, para este propósito utilizo hash de 256 bit. Cuando se codifica base64, comprimen hasta solo 43 caracteres de longitud, todos los caracteres imprimibles. Me imagino que a pesar de que es mucho más de lo que necesito, no es una gran molestia tenerlos por tanto tiempo.

+0

Umm, un GUID no puede adivinarse o reducirse fácilmente en la mayoría de las situaciones. –

+0

Muy bien, voy a editar la respuesta. – thomasrutter

7

Simplemente use un GUID. Muchas bases de datos los respaldan como un tipo nativo; son fáciles de manipular en los lenguajes/frameworks más populares; traducir perfectamente de una plataforma a otra; y every one is unique.

+0

Lo siento, creo que no estaba claro. Me pregunto acerca de la longitud. –

+0

Un GUID implica una longitud: los 128 bits/16 caracteres que mencionas en tu pregunta. – chaos

+0

Estoy buscando qué longitud debería ser. ¿16 es la longitud correcta? –

0

Siempre puedes mirar lo que otros han hecho, como Oauth2 que sugiere que el token esté entre 128 y 160 bits, y haz lo mismo. Me gusta this post, que dice que 122 bits deberían ser adecuados "para la mayoría de los propósitos, incluidos los códigos de lanzamiento para misiles nucleares". Lo cual es divertido si crees que el código de lanzamiento real es may have been 00000000 for 20 years. Demasiado para la seguridad de nuestros tokens de 160 bits.

Cuestiones relacionadas