Estoy generando un token para usar al hacer clic en el enlace en un correo electrónico de verificación. Planeo usar uniqid () pero la salida será predecible permitiendo que un atacante omita la confirmación e correos Mi solución es hachíslo. Pero eso no es suficiente porque si se descubre el hash que estoy usando, entonces será predecible. La solución es saltearlo. No estoy seguro de cómo hacerlo porque si uso una función para dar sal variable (por ejemplo, en pseudocódigo hash(uniqid()+time())
), ¿no está garantizada la singularidad del hash? Debería usar un hash constante y eso sería suficiente (por ejemplo, hash(uniqid()+asd741)
)
Creo que todas las respuestas pierden un punto importante. Tiene que ser único. ¿Qué sucede si openssl_random_pseudo_bytes()
produce el mismo número dos veces? Entonces un usuario no podría activar su cuenta. ¿Es el argumento contrario de la gente que es poco probable que produzca el mismo número dos veces? Por eso estaba considerando uniqid()
porque su salida es única.
Supongo que podría usar ambos y agregarlos juntos.