No todos los valores aleatorios se obtienen de la misma forma - para código relacionado con la seguridad, necesitas un tipo específico de valores aleatorios.
Resumen rápido, si te da pereza leerlo entero:
- No uses
Math.random(). Hay extremadamente muy pocos casos en los queMath.random()sea la mejor opción. No lo uses, a no ser que leas este artículo completamente, y hayas determinado que sirve para tu caso. - No uses
crypto.getRandomBytesdirectamente. Aunque utiliza CSPRNG, es fácil sesgar el resultado cuando se transforma, haciendo que el resultado sea predecible. - Si quieres generar tokens al azar o API keys: Usa
uuid, específicamente usa el métodouuid.v4(). Evitanode-uuid- no es la misma librería, y no produce valores aleatorios realmente seguros. - Si quieres generar números aleatorios dentro de un rango: Usa
random-number-csprng.