Practica implică activarea autentificării cu doi factori (MFA) și a cheilor de acces moderne bazate pe standardul WebAuthn pentru toate conturile utilizatorilor. Aceste mecanisme reduc drastic riscul de compromis al conturilor prin furt de parole sau atacuri de tip brute-force, adăugând un strat suplimentar de securitate. Ignorarea lor expune aplicația la vulnerabilități critice, unde o singură parolă slabă sau reutilizată poate duce la acces neautorizat complet la datele sensibile ale sistemului.
Cum o aplici
- Implementează MFA clasic: Permite utilizatorilor să activeze MFA prin aplicații autentificatoare (TOTP) sau SMS, preferând TOTP pentru securitate mai bună.
- Integrează WebAuthn: Adaugă suport pentru biometrie sau chei hardware (YubiKey) folosind API-ul browser-ului
navigator.credentials. - Prioritizează WebAuthn: Oferă experiența cea mai fluidă pentru utilizatori, eliminând necesitatea memorării codurilor.
- Stochează securizat: Nu salva niciodată cheile private; stochează doar identifikatorii publici și datele necesare verificării pe server.
Exemplu
Varianta greșită folosește doar parola, lăsând contul vulnerabil la credential stuffing:
// GRESIT: Doar parolă
if (verifyPassword(inputPassword, storedHash)) {
createSession(user);
}
Varianta corectă verifică mai întâi o cheie WebAuthn, apoi revine la parolă ca fallback:
// CORECT: WebAuthn + Fallback
const auth = await navigator.credentials.get({
publicKey: challengeOptions
});
if (auth) {
// Verificare semnătură criptografică pe server
if (verifyWebAuthnSignature(auth, user.publicKey)) {
createSession(user);
return;
}
}
// Fallback la parolă dacă WebAuthn eșuează
if (verifyPassword(inputPassword, storedHash)) {
createSession(user);
}
Cum verifici
- Teste automate: Scrie teste unitare care simulează autentificări fără MFA activat și verifică respingerea lor.
- Audit de configurare: Verifică baza de date pentru a confirma că câmpurile de securitate (ex:
mfa_enabled,webauthn_credential_id) sunt populate corect pentru utilizatorii activi. - Monitorizare: Urmărește metricile de login eșuat și detectează anomalii care indică încercări de bypass a MFA.
Greșeli frecvente
- SMS ca singur factor: SMS-ul este vulnerabil la interceptare (SIM swapping). Folosește întotdeauna aplicații autentificatoare sau WebAuthn când este posibil.
- Fallback nesigur: Dacă WebAuthn eșuează, nu reveni automat la parolă fără a valida strict identitatea utilizatorului prin alte metode sigure.
- Ignorarea backup codes: Nu oferi coduri de recuperare sigure pentru cazurile în care utilizatorul își pierde dispozitivul MFA, altfel riscă să fie blocat permanent sau să ceară suport tehnic excesiv.
Resurse gratuite
Alte subiecte din „Autentificare”
- Folosește OAuth 2.1 și OpenID Connect, nu scheme de autentificare proprii
- Folosește fluxul Authorization Code cu PKCE pentru toți clienții
- Nu folosi fluxurile Implicit și Resource Owner Password Credentials
- Stochează parolele cu Argon2id sau bcrypt, niciodată în clar
- Returnează mesaje generice la eșecul autentificării, fără enumerare de conturi
- Folosește token-uri de resetare a parolei unice, aleatorii și cu expirare scurtă
- Tratează cheile API ca secrete: scope limitat, rotație și revocare