Password robuste in Laravel con la classe Password
Laravel dispone di una classe specifica per la validazione delle password che si rivela essere estremamente utile nel caso in cui la nostra applicazione voglia assicurarsi che gli utenti scelgano password robuste.
Password può essere usata concatenando i suoi metodi direttamente nell'array di regole che specifichiamo quando validiamo i campi di una richiesta HTTP.
Questa classe ci permette di:
- Stabilire il numero minimo di caratteri richiesti.
- Stabilire se la password deve avere caratteri maiuscoli e minuscoli.
- Stabilire se la password deve contenere numeri.
- Stabilire se la password deve contenere caratteri speciali.
- Verificare se la password scelta è stata o meno esposta in un data breach.
Quindi avremo:
Password::min(int): Numero minimo di caratteri richiesti.Password::letters(): Deve contenere caratteri alfabetici.Password::mixedCase(): I caratteri alfabetici devono essere maiuscoli e minuscoli.Password::numbers(): Deve contenere caratteri numerici.Password::symbols(): Deve contenere caratteri speciali.Password::uncompromised(): Non deve essere stata esposta in un data breach.
Possiamo ad esempio usare questa classe in una FormRequest come segue:
namespace App\Http\Requests\Auth;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rules\Password;
class RegisterRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email:rfc,strict', 'max:255', 'unique:users,email'],
'password' => ['required', 'string', 'confirmed', Password::min(12)
->letters()
->mixedCase()
->numbers()
->symbols()
->uncompromised()],
];
}
}
Si tratta in definitiva di un'ottima soluzione built-in offerta dal framework che ci risparmia un lungo e spesso infruttuoso lavoro manuale.