Validatori Sicurezza
Panoramica
I validatori sicurezza gestiscono la verifica di credenziali utente: formato username e requisiti di complessità delle password. Sono progettati per guidare l'utente verso pratiche sicure durante la registrazione o il cambio password.
A differenza di molti validatori, questi restituiscono errori multipli quando più requisiti falliscono contemporaneamente, permettendo di visualizzare all'utente tutti i problemi in una sola volta.
Validatori
username
Sintassi: username
Descrizione: Verifica che il nome utente rispetti le regole standard. Controlla lunghezza, carattere iniziale, caratteri ammessi e assenza di caratteri speciali consecutivi.
Requisiti:
- Lunghezza: 3-30 caratteri
- Deve iniziare con una lettera (a-z, A-Z)
- Caratteri permessi: lettere, numeri, underscore (
_), punto (.), trattino (-) - Non può avere caratteri speciali consecutivi (es.
__,..,--,._)
Esempi:
// Valido
ValidationService.validate('mario_rossi', 'username')
ValidationService.validate('user123', 'username')
ValidationService.validate('john.doe', 'username')
ValidationService.validate('admin-2024', 'username')
// Non valido
ValidationService.validate('123user', 'username') // non inizia con lettera
ValidationService.validate('ab', 'username') // troppo corto (< 3)
ValidationService.validate('user__name', 'username') // consecutivi (__)
ValidationService.validate('user..name', 'username') // consecutivi (..)
ValidationService.validate('user@name', 'username') // carattere @ non ammesso
// (max 30 caratteri)
// In schema DynamicFormLayouts
{ name: 'username', type: 'text', validation: 'required|username' }
password
Sintassi: password
Descrizione: Verifica che la password rispetti i requisiti minimi di sicurezza. Restituisce tutti gli errori simultaneamente.
Requisiti:
- Almeno 8 caratteri
- Almeno una lettera maiuscola (A-Z)
- Almeno una lettera minuscola (a-z)
- Almeno un numero (0-9)
- Almeno un carattere speciale (
!@#$%^&*(),.?":{}|<>)
Esempi:
// Valido
ValidationService.validate('Password123!', 'password')
ValidationService.validate('MySecure#Pass1', 'password')
// Non valido - errori multipli
ValidationService.validate('password', 'password') // manca: maiuscola, numero, speciale
ValidationService.validate('Password', 'password') // manca: numero, speciale
ValidationService.validate('Pass123', 'password') // troppo corta + manca speciale
ValidationService.validate('PASS123!', 'password') // manca minuscola
// In schema DynamicFormLayouts
{ name: 'password', type: 'password', validation: 'required|password' }
strong
Sintassi: strong
Descrizione: Verifica che la password rispetti requisiti di sicurezza elevati. Include tutti i requisiti di password con soglie più alte e vincoli aggiuntivi.
Requisiti:
- Almeno 12 caratteri
- Almeno una lettera minuscola (a-z)
- Almeno una lettera maiuscola (A-Z)
- Almeno un numero (0-9)
- Almeno un carattere speciale (
!@#$%^&*(),.?":{}|<>) - Nessuno spazio
- Nessun carattere ripetuto 3+ volte consecutive (es.
aaa,111)
Esempi:
// Valido
ValidationService.validate('SuperSecure123!@#', 'strong')
ValidationService.validate('MyP@ssw0rdIsStr0ng', 'strong')
// Non valido
ValidationService.validate('Short1!', 'strong') // troppo corta (< 12)
ValidationService.validate('Password 123!', 'strong') // contiene spazio
ValidationService.validate('Passsword123!', 'strong') // "sss" ripetuto 3 volte
ValidationService.validate('Password123', 'strong') // manca carattere speciale
// In schema DynamicFormLayouts
{ name: 'nuovapassword', type: 'password', validation: 'required|strong' }
passwordpolicy
Sintassi: passwordpolicy oppure passwordpolicy:livello
Descrizione: Verifica la password secondo una policy configurabile. Permette di scegliere il livello di sicurezza richiesto in base al contesto applicativo.
Parametro: (opzionale) basic, medium (default), strong
Policy basic (minLength: 8)
Requisiti:
- Almeno una lettera minuscola
- Almeno una lettera maiuscola
- Almeno un numero
ValidationService.validate('Password1', 'passwordpolicy:basic') // valido
ValidationService.validate('password1', 'passwordpolicy:basic') // non valido (manca maiuscola)
ValidationService.validate('PASSWORD1', 'passwordpolicy:basic') // non valido (manca minuscola)
Policy medium (minLength: 10) — default
Requisiti basic +
- Almeno un carattere speciale (
!@#$%^&*) - Nessun carattere ripetuto 3+ volte consecutive
ValidationService.validate('Password1!', 'passwordpolicy') // valido (medium è default)
ValidationService.validate('Password1!@', 'passwordpolicy:medium') // valido
ValidationService.validate('Password111!', 'passwordpolicy:medium') // non valido (111 ripetuto)
Policy strong (minLength: 12)
Requisiti medium +
- Nessuna sequenza comune:
123,abc,qwerty,password
ValidationService.validate('MySecurePass1!@', 'passwordpolicy:strong') // valido
ValidationService.validate('Password123!@#', 'passwordpolicy:strong') // non valido (sequenza "123")
ValidationService.validate('MyQwerty12345!', 'passwordpolicy:strong') // non valido ("qwerty")
Esempi completi:
// Registrazione con policy configurabile tramite variabile
const policyLevel = 'medium'
ValidationService.validate('MyPass1!@#', `passwordpolicy:${policyLevel}`)
// In schema DynamicFormLayouts
{ name: 'password', type: 'password', validation: 'required|passwordpolicy:strong' }
Confronto policy
| Policy | Min. lunghezza | Maiuscola | Minuscola | Numero | Speciale | No ripetizioni | No sequenze comuni |
|---|---|---|---|---|---|---|---|
basic | 8 | ✓ | ✓ | ✓ | - | - | - |
medium | 10 | ✓ | ✓ | ✓ | ✓ | ✓ | - |
strong | 12 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
password | 8 | ✓ | ✓ | ✓ | ✓ | - | - |
strong (validatore) | 12 | ✓ | ✓ | ✓ | ✓ | ✓ | - |