Fallimenti di Autenticazione (OWASP A07): Come Riconoscerli e Difendersi
1 luglio 2026 · di Pentevo
L'autenticazione è il guardiano del cancello: se fallisce, tutto il resto della sicurezza può essere aggirato. OWASP include i fallimenti di autenticazione nel Top 10 perché sono estremamente comuni e le conseguenze — account compromessi, furto di identità, accesso non autorizzato — sono gravi.
Le principali vulnerabilità
Assenza di protezione contro il brute force
Un'applicazione che non limita i tentativi di login permette ad un attaccante di provare milioni di combinazioni username/password fino a trovare quella giusta.
Con hardware moderno e password comuni, un attacco a dizionario su un sistema non protetto può compromettere migliaia di account in ore.
Difesa:
- Blocco temporaneo dopo N tentativi falliti (es. 5 tentativi, poi 15 minuti di lockout)
- CAPTCHA dopo pochi tentativi falliti
- Notifica all'utente di tentativi di accesso falliti
- Rate limiting per IP
Credential stuffing
Non è brute force: l'attaccante usa username e password reali rubate da altri breach. Dato che molti utenti usano le stesse credenziali su più siti, il tasso di successo è alto.
Difesa:
- MFA (Multi-Factor Authentication)
- Verifica delle password contro database di leak (HIBP)
- Rilevamento di pattern di accesso anomali (IP diversi, orari inusuali)
Session management insicuro
Le sessioni sono spesso il vero bersaglio:
- Session token prevedibili o con entropia bassa
- Token non invalidati al logout
- Sessioni che non scadono
- Token trasmessi in URL (finiscono nei log)
Difesa:
- Genera token di sessione con CSPRNG (Cryptographically Secure Pseudo-Random Number Generator)
- Invalida il token al logout lato server
- Imposta timeout di sessione appropriati
- Non mettere mai token in URL
Password deboli permesse
Applicazioni che permettono password come "123456", "password", "admin". Le prime 1000 password più comuni coprono il 90% degli account compromessi.
Difesa:
- Imponi lunghezza minima (almeno 8 caratteri, meglio 12+)
- Verifica che la password non sia in liste di password comuni
- Usa un meter della forza della password nel frontend
- Non richiedere cambio password periodico forzato (controproducente)
"Ricordami" implementato male
La funzione "ricordami" usa spesso cookie con token predittibili o senza scadenza.
Difesa:
- Usa token opachi generati casualmente per "ricordami"
- Imposta scadenza ragionevole (es. 30 giorni)
- Invalida tutti i token "ricordami" al cambio password
Reset password insicuro
- Domande segrete (facilmente indovinabili da social engineering)
- Link di reset che non scadono
- Reset tramite security questions oscure
Difesa:
- Reset tramite email con token a scadenza breve (15-60 minuti)
- Non usare domande segrete
- Invalida il token dopo il primo uso
- Notifica all'utente quando una richiesta di reset viene effettuata
Implementare l'autenticazione moderna
MFA: la difesa più efficace
L'autenticazione multi-fattore riduce drasticamente il rischio di compromissione dell'account anche quando la password è stata rubata.
Livelli di sicurezza MFA (dal meno al più sicuro):
- SMS OTP — vulnerabile a SIM swapping ma molto meglio di niente
- Email OTP — simile a SMS
- TOTP (Google Authenticator, Authy) — resistente a SIM swap, buona UX
- Push notification (Duo, Okta) — comodo, resistente a phishing base
- Passkey / FIDO2 — resistente a phishing, il futuro dell'autenticazione
- Hardware token (YubiKey) — massima sicurezza
Passkey: l'autenticazione del futuro
Le passkey usano crittografia a chiave pubblica per eliminare le password. L'utente si autentica con biometria (Face ID, impronta) o PIN del dispositivo. Non c'è password da rubare o da phisare.
Grandi provider (Google, Apple, Microsoft) supportano già le passkey. Considera di implementarle nelle tue applicazioni.
Principi generali
Non reinventare la ruota — usa librerie e framework di autenticazione maturi (Clerk, Auth0, Supabase Auth, NextAuth.js). Implementare l'autenticazione da zero è fonte comune di vulnerabilità.
Confronta password in modo sicuro — usa funzioni di confronto a tempo costante per evitare timing attacks.
Log tutto — ogni login riuscito e fallito, con IP, user agent, timestamp. Questi log sono essenziali per incident response.
Notifiche — informa gli utenti di eventi di sicurezza: nuovo login da dispositivo sconosciuto, cambio password, aggiunta di MFA.
I fallimenti di autenticazione spesso derivano da implementazioni custom che non considerano tutti i vettori di attacco. La soluzione migliore è usare servizi e librerie specializzati, configurarli correttamente, e aggiungere sempre MFA.
Domande frequenti
Qual è la differenza tra autenticazione e autorizzazione?
L'autenticazione risponde a 'Chi sei?' (verifica l'identità). L'autorizzazione risponde a 'Cosa puoi fare?' (verifica i permessi). I fallimenti di autenticazione riguardano la prima fase: permettono a qualcuno di impersonare un utente legittimo.
L'autenticazione a due fattori (2FA/MFA) protegge davvero?
Sì, significativamente. Anche se un attaccante ottiene la password, senza il secondo fattore non può accedere. Le forme più sicure sono TOTP (Google Authenticator) e chiavi hardware (YubiKey). Gli SMS sono meno sicuri ma comunque molto meglio di nessun 2FA.
Come posso sapere se le password dei miei utenti sono state compromesse?
Integra Have I Been Pwned (HIBP) nella tua applicazione. Puoi verificare se una password è in un database di leak conosciuto usando l'API k-anonymity di HIBP, senza mai inviare la password in chiaro.
Letture correlate
API Security: Le Best Practice per Proteggere le Tue API nel 2026
Le API sono il bersaglio preferito dagli attaccanti. Guida completa alle best practice di sicurezza per API REST e GraphQL: autenticazione, autorizzazione, rate limiting e molto altro.
SecurityBroken Access Control: La Vulnerabilità #1 OWASP Spiegata
Il broken access control è la vulnerabilità più diffusa nel web. Scopri come funziona, gli esempi reali e come proteggere la tua applicazione.
SecurityFallimenti Crittografici (OWASP A02): Guida Completa con Esempi
I fallimenti crittografici sono la seconda vulnerabilità più comune OWASP. Scopri come riconoscerli, esempi reali e come proteggere i dati sensibili.
SecurityPrompt Injection negli LLM: La Vulnerabilità che Minaccia l'AI nel 2026
La prompt injection è la vulnerabilità più critica dei sistemi basati su LLM. Scopri come funziona, le varianti principali e come proteggere le tue applicazioni AI.
Metti in pratica questi concetti
Pentevo Academy trasforma questi concetti in lezioni guidate, video e quiz — gratis.
Inizia a imparare gratis