El paquete Random que genera valores aleatorios criptográficamente seguros

  • Publicado el 03 junio, 2024
  • Palabras: 427

El paquete Random de Stephen Rees-Carter genera valores aleatorios criptográficamente seguros en una variedad de formatos diferentes a través de un paquete auxiliar simple para PHP

El paquete Random que genera valores aleatorios criptográficamente seguros

Cita del autor

 

“Algo que encuentro con frecuencia durante mis auditorías de seguridad (especialmente en bases de código antiguas) es la aleatoriedad insegura, generalmente en lugares donde se requiere seguridad. Por lo general, se utiliza alguna forma de rand(), a menudo inyectada dentro de md5() para generar un hash aleatorio, combinada con str_shuffle() para generar nuevas contraseñas, o se utiliza para crear una contraseña de un solo uso (OTP) con rand(100_000, 999_999).”

 

"El problema es que rand() no es criptográficamente seguro, como tampoco lo son mt_rand(), mt_srand(), str_shuffle(), array_rand() ni ninguna de las otras funciones inseguras disponibles en PHP. No podemos simplemente declarar que estos métodos son inseguros, dejar de lado el problema y marcharnos. En lugar de eso, necesitamos proporcionar alternativas seguras, por lo que en lugar de decir simplemente "no uses rand() de esa manera", podemos decir "aquí tienes un método seguro que puedes usar en su lugar".

 

A continuación se muestran algunos ejemplos de lo que puede hacer con este paquete aleatorio:

 

Contraseña aleatoria de un solo uso (OTP numéricas de longitud fija)

 

Genere una contraseña de un solo uso (OTP) numérica aleatoria de n dígitos:

 

$otp = Random::otp(int $length): string;

 

Random String

 

Genera una cadena aleatoria de caracteres $length, que incluye caracteres de los tipos de caracteres habilitados. De forma predeterminada, seleccionará caracteres de forma aleatoria y no garantizará que haya ningún tipo de carácter específico presente. Si necesita que se incluya uno de cada carácter, puede establecer $requireAll = true.

 

$string = Random::string(
    int $length = 32,
    bool $lower = true,
    bool $upper = true,
    bool $numbers = true,
    bool $symbols = true,
    bool $requireAll = false
): string;

 

El método de cadena también viene con envoltorios agradables para casos de uso comunes:

 

// Random letters only
$letters = Random::letters(int $length = 32): string;
 
// Random alphanumeric (letters and numbers) token string
$token = Random::token(int $length = 32): string;
 
// Random letters, numbers, and symbols (i.e. a random password).
$password = Random::password(int $length = 16, bool $requireAll = false): string;
 
// Random alphanumeric token string with chunks separated by dashes, making it easy to read and type.
$password = Random::dashed(int $length = 25, string $delimiter = '-', int $chunkLength = 5, bool $mixedCase = true): string;

 

Mezclar Array, String, or Collection

 

Mezcle de forma segura una matriz, una cadena o una colección de Laravel, conservando opcionalmente las claves.

 

$shuffled = Random::shuffle(
    array|string|\Illuminate\Support\Collection $values,
    bool $preserveKeys = false
): array|string|\Illuminate\Support\Collection;

 

Y más

 

Visita la página oficial del paquete en GitHub para obtener detalles completos y también consulta la publicación del anuncio.

Antonio Jenaro

Antonio Jenaro

Web Developer

Archivado en:

Fuente: Laravel news

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión