Controllore forza password
Analisi in tempo reale con il motore zxcvbn: dizionari di password comuni, sequenze da tastiera, sequenze, ripetizioni e date ti sottraggono punti — una misura di sicurezza molto più veritiera rispetto al conteggio di classi maiuscole/minuscole/cifre/simboli. Tutto viene eseguito localmente; la tua password non lascia mai il browser.
- Motore
- zxcvbn
- Punteggio
- scala 0–4
- Privacy
- Non viene mai caricata
- Dizionario
- Password comuni integrate
Impostazioni policy avanzate
Separati da virgola o newline, non sensibile alle maiuscole/minuscole. zxcvbn cattura automaticamente variazioni di maiuscole/minuscole, sostituzioni con caratteri simili (es. Pa$$w0rd) e inversioni.
Confronta due password
PERCHÉ È IMPORTANTE
Perché "maiuscola + minuscola + cifra + simbolo" non è sicurezza
P@ssw0rd! soddisfa tutti e quattro i criteri di carattere e compare comunque nelle liste delle violazioni di dati. La forza dipende dalla difficoltà a indovinare, non dalla somma aritmetica delle classi di caratteri.
Corrispondenza password deboli
Un dizionario integrato di password e parole comuni penalizza pesantemente — password, 123456 e P@ssw0rd vengono correttamente valutati come molto deboli.
Rilevamento pattern
Sequenze da tastiera, sequenze lineari, ripetizioni, date e parole comuni tutti riducono lo spazio di indovinamento effettivo.
Entropia effettiva, non teorica
Il punteggio stima gli indovinamenti reali basati sulle strutture trovate — non la dimensione del caratter-set moltiplicata per la lunghezza.
Due scenari di attacco
Stime separate per attacco offline di cracking GPU e attacco online con limitazione di velocità aiutano a capire il costo per l'attaccante.
Politica personalizzata e lista nera
Imposta lunghezza minima e requisiti di classe; aggiungi nomi aziendali o nomi in codice dei progetti per rispettare le regole password aziendali.
Completamente locale
La tua password non lascia mai il browser né entra in contatto con un server; le impostazioni risiedono solo nel tuo localStorage.
Capire la forza della password
Come funziona il punteggio, cosa significano i tempi di cracking e cosa rende davvero una buona password.
Come viene calcolato il punteggio 0–4 di zxcvbn?
zxcvbn prima divide la password in blocchi: parole di dizionario (password comuni, parole in inglese), sequenze da tastiera, sequenze lineari, ripetizioni, date e frammenti brute-force.
Stima il numero di indovinamenti per blocco, li combina in un conteggio totale di indovinamenti e lo mappa a un punteggio 0–4. Le trasformazioni comuni vengono considerate automaticamente — inversione di maiuscole/minuscole, sostituzioni con caratteri simili (@→a, 0→o), suffissi di anno — motivo per cui P@ssw0rd ha un punteggio basso nonostante la varietà di caratteri.
Qual è la differenza tra entropia effettiva e dimensione del caratter-set?
La dimensione del caratter-set moltiplica la dimensione dell'alfabeto per la lunghezza — un limite teorico che assume che ogni carattere sia completamente casuale, cosa che le password reali quasi mai sono.
L'entropia effettiva (il numero di bit mostrato qui) è lo spazio di indovinamento reale che zxcvbn stima dopo aver trovato parole di dizionario e pattern. Alla stessa lunghezza, iloveyou2024 ha un'entropia effettiva molto inferiore a una stringa casuale.
Come vengono stimati i tempi di cracking — sono affidabili?
Tempo di decifrazione = ipotesi stimate ÷ ipotesi al secondo. Vengono mostrate due velocità: ~10 miliardi/sec per un farm GPU offline (l'attaccante possiede l'hash) e ~100/ora per un accesso online limitato dalla velocità.
Considerale come ordini di grandezza, non come previsioni: la velocità reale dipende dall'algoritmo di hash (bcrypt/Argon2 sono ordini di grandezza più lenti di MD5), dall'hardware e dalla qualità del dizionario. Una differenza di 10× non cambia nulla; una differenza di un milione di sì.
Cosa rende realmente una password sicura?
Due metodi sicuri: una stringa casuale di 16+ caratteri da un gestore di password, unica per ogni sito; o una frase passphrase di 4+ parole non correlate (come corretto-cavallo-batteria-clip) — lunga e senza senso.
Qualunque tu scelga, abbinala all'autenticazione a più fattori (MFA) e non riutilizzare mai la stessa password tra diversi siti.
Il mio sito richiede maiuscole/minuscole/cifre/simboli — perché il punteggio è basso?
La politica aziendale (lunghezza, classi di caratteri) è un requisito minimo: risponde a "è conforme?". Il punteggio di zxcvbn risponde a "può essere indovinata?". I due sono indipendenti.
Aggiungere un punto esclamativo e un anno a una parola comune (password!2024) supera la maggior parte dei controlli delle politiche, ma viene decifrata in pochi secondi da un attacco dizionario.
La mia password viene caricata da qualche parte?
No. Tutto funziona nel tuo browser tramite JavaScript — non viene effettuata nessuna richiesta di rete che invii la password, e funziona anche offline. Solo la tua politica personalizzata (regole di lunghezza, elenco di blocco) viene salvata localmente; non contiene mai una password.
Controllo forza password nel codice
Per aggiungere controlli di sicurezza in tempo reale al tuo modulo di registrazione o modifica password, usa una porta di zxcvbn per la tua lingua:
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
const res = zxcvbn('P@ssw0rd!');
console.log(res.score, res.crack_times_display);
</script>
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
composer require bjeavons/zxcvbn-php
<?php
require __DIR__ . '/vendor/autoload.php';
use ZxcvbnPhp\Zxcvbn;
$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
go get github.com/nbutton23/zxcvbn-go
package main
import (
"fmt"
zxcvbn "github.com/nbutton23/zxcvbn-go"
)
func main() {
res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
fmt.Println(res.Score, res.Guesses)
}
# Add dependency
cargo add zxcvbn
use zxcvbn::zxcvbn;
fn main() {
match zxcvbn("P@ssw0rd!", &[]) {
Ok(estimate) => {
println!("score: {}", estimate.score()); // 0..4
if let Some(times) = estimate.crack_times() {
println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
}
}
Err(err) => eprintln!("zxcvbn error: {err}"),
}
}
I punteggi e le stime dei modelli possono differire leggermente da questa pagina a seconda delle versioni della libreria, ma i principi sono gli stessi. Per i controlli lato server, imposta anche un limite di lunghezza e limitazione di velocità in modo che gli input eccessivamente lunghi non vengano usati per sovraccaricare la CPU.
Domande frequenti
Come funziona questo controllo di sicurezza delle password?
Usa zxcvbn, l'algoritmo open-source di Dropbox: la password viene confrontata con dizionari di password comuni, elenchi di parole in inglese, sequenze sulla tastiera, sequenze numeriche, date e modelli ripetuti. Il numero medio stimato di ipotesi necessarie all'attaccante viene mappato a un punteggio da 0 a 4 e stime del tempo di decifrazione.
P@ssw0rd sembra complessa — perché è "molto debole"?
È una delle password deboli più iconiche nei corpus di violazioni. Appare direttamente nei dizionari di zxcvbn, e la capitalizzazione più le sostituzioni leet (a→@, o→0) vengono riconosciute automaticamente. Caratteri variati con una struttura completamente prevedibile è esattamente ciò che gli attaccanti che usano dizionari basati su regole provano per primi.
Quanto deve essere lunga una password?
Quando viene generata casualmente, una stringa di 12+ caratteri di solito respinge gli attacchi online, mentre una di 16+ resiste alla decifrazione offline tramite GPU per molti anni. La lunghezza conta più della complessità dei caratteri: una stringa casuale di 20 caratteri minuscoli è più sicura di una stringa di 10 caratteri mista da tutte e quattro le classi.
Perché separare i tempi di decifrazione offline e online?
Gli scenari di attacco differiscono: dopo una violazione del database, un attaccante può provare hash localmente su GPU a miliardi di ipotesi al secondo; contro un accesso live, la limitazione di velocità permette solo poche ipotesi al secondo. La stessa password può sopravvivere trilioni di volte più a lungo in uno scenario che nell'altro — per questo vengono mostrati entrambi.
I miei input vengono salvati da qualche parte?
No. La tua password rimane solo nella memoria del tuo browser e scompare dopo l'aggiornamento della pagina. Solo le impostazioni della tua politica personalizzata (regole di lunghezza, elenco di blocco) vengono conservate nella memoria locale — non contengono mai una password.