Sprawdzanie siły hasła
Analiza w czasie rzeczywistym za pomocą silnika zxcvbn: słowniki popularnych haseł, sekwencje na klawiaturze, ciągi, powtórzenia i daty kosztują Cię punkty — to znacznie bardziej miarodajny miernik bezpieczeństwa niż liczenie klas małych/wielkich liter, cyfr lub symboli. Wszystko działa lokalnie; Twoje hasło nigdy nie opuszcza przeglądarki.
- Silnik
- zxcvbn
- Wynik
- Skala 0–4
- Prywatność
- Nigdy nie przesyłane
- Słownik
- Wbudowane popularne hasła
Zaawansowane ustawienia polityki
Oddzielone przecinkami lub nowymi liniami, bez uwzględniania wielkości liter. Narzędzie zxcvbn automatycznie wychwytuje warianty wielkości liter, zamiany na znaki podobne (np. Pa$$w0rd) oraz odwrócenia.
Porównaj dwa hasła
DLACZEGO TO WAŻNE
Dlaczego „wielkie + małe litery + cyfra + symbol” nie oznacza bezpieczeństwa
P@ssw0rd! spełnia wszystkie cztery warunki dotyczące znaków, a mimo to znajduje się na górze rzeczywistych list naruszeń bezpieczeństwa. Siła zależy od przewidywalności, a nie od sumy klas znaków.
Dopasowywanie słabych haseł
Wbudowany słownik popularnych haseł i słów surowo karane – hasło, 123456 i P@ssw0rd są poprawnie oceniane jako bardzo słabe.
Wykrywanie wzorców
Chodniki po klawiaturze, proste sekwencje, powtórzenia, daty i popularne słowa zmniejszają efektywną przestrzeń zgadywania.
Efektywna, a nie teoretyczna entropia
Wynik szacuje rzeczywiste próby zgadywania na podstawie znalezionych struktur – a nie rozmiar zbioru znaków pomnożony przez długość.
Dwa scenariusze ataków
Oddzielne szacunki dla ataków offline przy użyciu karty graficznej oraz ataków online z ograniczeniami szybkości budują intuicję dotyczącą kosztów atakującego.
Niestandardowa polityka i czarna lista
Ustaw minimalną długość i wymagania dotyczące klas znaków; dodaj nazwy firm lub kody projektów, aby spełnić reguły haseł w organizacji.
W pełni lokalne działanie
Twoje hasło nigdy nie opuszcza przeglądarki ani nie dotyka serwera; ustawienia znajdują się wyłącznie w Twoim localStorage.
Zrozumienie siły hasła
Jak działa ocenianie, co oznaczają czasy złamań i co właściwie tworzy dobre hasło.
Jak obliczany jest wynik 0–4 narzędzia zxcvbn?
zxcvbn najpierw dzieli hasło na części: słowniki (popularne hasła, słowa angielskie), chodniki po klawiaturze, sekwencje, powtórzenia, daty i fragmenty brute-force.
Szacuje liczbę prób zgadywania na część, łączy je w całkowitą liczbę prób zgadywania i mapuje na wynik 0–4. Popularne przekształcenia są uwzględniane automatycznie – odwracanie wielkości liter, zamiany na znaki podobne (@→a, 0→o), przyrostki lat – dlatego P@ssw0rd ma słaby wynik pomimo różnorodności znaków.
Jaka jest różnica między efektywną entropią a rozmiarem zbioru znaków?
Rozmiar zbioru znaków mnoży wielkość alfabetu przez długość – to teoretyczna granica zakładająca, że każdy znak jest w pełni losowy, co w rzeczywistych hasłach prawie nigdy nie występuje.
Efektywna entropia (pokazana liczba bitów) to rzeczywista przestrzeń zgadywania, którą zxcvbn szacuje po znalezieniu słów i wzorców z słownika. Przy tej samej długości hasło iloveyou2024 ma znacznie mniejszą efektywną entropię niż losowy ciąg znaków.
Jak szacowane są czasy złamań – czy są wiarygodne?
Czas złamania = szacowana liczba prób ÷ liczba prób na sekundę. Wyświetlane są dwie prędkości: ~10 miliardów/sek dla farmy GPU w trybie offline (atakujący posiada hasz) oraz ~100/godzin dla logowania z ograniczeniami prędkości w trybie online.
Traktuj je jako rzędy wielkości, a nie prognozy: rzeczywista prędkość zależy od algorytmu haszującego (bcrypt/Argon2 są rzędów wielkości wolniejsze niż MD5), sprzętu i jakości słownika. Błąd o czynnik 10 nic nie zmieni – liczy się dopiero wielokrotna przepaść.
Co właściwie sprawia, że hasło jest dobre?
Dwa solidne podejścia: losowy ciąg znaków o długości 16+ pobrany z menedżera haseł, unikalny dla każdej witryny; lub fraza hasłowa składająca się z 4+ niepowiązanych słów (np. poprawny-konik-bateria-szpilka) – długa i bez znaczenia.
Niezależnie od wyboru, łącz ją z uwierzytelnianiem wieloskładnikowym (MFA) i nigdy nie używaj tego samego hasła w różnych witrynach.
Moja witryna wymaga wielkich/małych liter/cyfr/symboli – dlaczego niska ocena?
Polityka firmy (długość, klasy znaków) to minimum zgodności: odpowiada na pytanie "czy to się zgadza?". Ocena z zxcvbn odpowiada na pytanie "czy można to odgadnąć?". Te dwa są niezależne.
Dodanie wykrzyknika i roku do wspólnego słowa (hasło!2024) przechodzi większość kontroli polityki, ale spada w ataku słownikowym w ciągu kilku sekund.
Czy moje hasło jest gdzieś przesyłane?
Nie. Wszystko działa w Twojej przeglądarce za pomocą JavaScript – nie ma żądania sieciowego, które wysyłałoby hasło, a narzędzie działa również offline. Tylko Twoja niestandardowa polityka (reguły długości, lista blokowanych haseł) jest przechowywana lokalnie; nigdy nie zawiera hasła.
Sprawdzanie siły hasła w kodzie
Aby dodać aktywną ocenę siły do własnego formularza rejestracji lub zmiany hasła, użyj portu zxcvbn dla swojego języka:
<!-- 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}"),
}
}
Oceny i szacunki wzorców mogą nieznacznie różnić się od tej strony w zależności od wersji bibliotek, ale zasady są takie same. W przypadku kontroli po stronie serwera również wymuś maksymalną długość i ograniczenie prędkości, aby zbyt duże dane wejściowe nie mogły obciążyć procesora.
Często zadawane pytania
Jak działa ten sprawdzacz siły hasła?
Wykorzystuje zxcvbn, algorytm open-source z Dropboxa: hasło jest porównywane ze słownikami słabych haseł, listami słów w języku angielskim, sekwencjami na klawiaturze, sekwencjami, datami i powtarzającymi się wzorcami. Szacowana średnia liczba prób potrzebnych atakującemu jest mapowana na ocenę 0–4 oraz szacunki czasu złamania.
P@ssw0rd wygląda skomplikowanie – dlaczego jest "bardzo słaby"?
Jest to jedno z najbardziej ikonicznych słabych haseł w bazie naruszeń. Pojawia się bezpośrednio w słownikach zxcvbn, a wielkość liter oraz podstawienia leet (a→@, o→0) są automatycznie rozpoznawane. Różnorodne znaki w całkowicie przewidywalnej strukturze są dokładnie tym, co atakujące stosujący słowniki oparte na regułach próbują jako pierwsze.
Jak długie powinno być hasło?
W przypadku generacji losowej 12+ znaków zwykle chroni przed atakami online, podczas gdy 16+ wytrzymuje złamanie offline na GPU przez wiele lat. Długość ma większe znaczenie niż złożoność znaków: losowy ciąg małych liter o długości 20 znaków pokonuje 10-znakową mieszankę wszystkich czterech klas.
Jak długie powinno być hasło?
Scenariusze ataków różnią się: po naruszeniu bazy danych atakujący może próbować hasze lokalnie na GPU w tempie miliardów prób na sekundę; w przypadku aktywnego logowania ograniczenie prędkości pozwala na zaledwie kilkanaście prób na sekundę. To samo hasło może przetrwać bilion razy dłużej w jednym scenariuszu niż w drugim – dlatego wyświetlane są oba.
Czy moje dane wejściowe są gdzieś przechowywane?
Nie. Twoje hasło znajduje się tylko w pamięci przeglądarki i znika po odświeżeniu. Tylko ustawienia Twojej niestandardowej polityki (reguły długości, lista blokowanych haseł) są przechowywane w local storage – nigdy nie zawierają hasła.