Generación de cadenas aleatorias en PHP: ¿cómo hacerlo correctamente y de forma segura?
¡Hola a todos! Soy un desarrollador PHP principiante, estoy escribiendo mi primer sitio con registro de usuarios. Necesito generar tokens aleatorios para confirmación de email y contraseñas temporales. Busqué en Google un método simple, pero no estoy seguro de que sea correcto.
Esto es lo que uso actualmente:
```php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
echo generateRandomString(32); // Por ejemplo: "a3F8kL9mN2..."
```
Problemas que veo:
1. La función `rand()` — he leído que no es criptográficamente segura.
2. No hay garantía de que la cadena sea única.
3. No está claro cómo hacer que la cadena contenga solo letras o solo números.
Indíquenme cómo generar cadenas aleatorias correctamente en PHP. Necesito ejemplos de c