Skip to content

fix(hasla): odrzucaj hasła złożone głównie z danych konta - #927

Merged
mpasternak merged 2 commits into
devfrom
fix/haslo-dane-konta
Oct 24, 2026
Merged

mpasternak merged 2 commits into
devfrom
fix/haslo-dane-konta

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co

Hasło złożone z własnego imienia i nazwiska, np. przykladowska-zofia czy ZofiaPrzykladowska1990 dla Zofii Przykładowskiej, przechodziło walidację:

  • UserAttributeSimilarityValidator z Django porównuje całe hasło z każdym polem osobno. Połączenie imienia z nazwiskiem daje podobieństwo poniżej progu 0,7.
  • zxcvbn (także z zxcvbn-pl) ma pospolite imiona i nazwiska nisko w słownikach, więc dodanie ich jako user_inputs nie zmienia oceny. Przykładowe hasło dostawało ocenę 3, dokładnie na progu.

Atakujący celujący w konkretną osobę sprawdzi takie hasło w pierwszych próbach.

Nowy PersonalDataPasswordValidator wycina z hasła imię, nazwisko, login i część lokalną e-maila (bez domeny), bez względu na wielkość liter i polskie znaki, i wymaga, żeby zostało co najmniej 6 liter:

  • przykladowska-zofia, Przykladowska.Zofia.2024!, zofia-przykladowska-pl, zprzykladowska-zprzykladowska → odrzucone,
  • przykladowska-zofia-zielony-rower → przechodzi (zostaje „zielonyrower”),
  • cudze imię i nazwisko → nie dotyczy (to ocenia zxcvbn ze słownikami).

Zarejestrowany w AUTH_PASSWORD_VALIDATORS, więc działa wszędzie, gdzie Django woła validate_password z użytkownikiem. Wyjątek: przy dodawaniu konta w adminie formularz zna tylko login, więc imienia i nazwiska jeszcze nie ma.

Testy

Nowe testy w test_password_validation.py (z polskimi znakami, puste pola, brak użytkownika, validate_password). Lokalnie testy haseł, admina, kreatora, middleware i pozostałych modułów dotykających haseł: 3019 passed.

🤖 Generated with Claude Code

@gitguardian

gitguardian Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

️✅ There are no secrets present in this pull request anymore.

If these secrets were true positive and are still valid, we highly recommend you to revoke them.
While these secrets were previously flagged, we no longer have a reference to the
specific commits where they were detected. Once a secret has been leaked into a git
repository, you should consider it compromised, even if it was deleted immediately.
Find here more information about risks.


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

mpasternak and others added 2 commits October 24, 2026 20:59
Hasła typu „przykladowska-zofia” czy „ZofiaPrzykladowska1990” przechodziły
dla Zofii Przykładowskiej: UserAttributeSimilarityValidator porównuje całe
hasło z każdym polem osobno (imię+nazwisko daje podobieństwo poniżej progu
0,7), a zxcvbn ma pospolite imiona i nazwiska nisko w słownikach.
PersonalDataPasswordValidator wycina z hasła imię, nazwisko, login i część
lokalną e-maila (bez polskich znaków, bez względu na wielkość liter)
i wymaga, żeby zostało co najmniej 6 liter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hasła)

Dopisane do podpowiedzi przy polu nowego hasła: „Unikaj imion, nazwisk,
nazw miejscowości i dat z dopisanymi cyframi.” Celowo bez konkretnego
przykładu hasła — ludzie przepisaliby go jako własne.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mpasternak
mpasternak force-pushed the fix/haslo-dane-konta branch from 6a7f6d7 to e269047 Compare October 24, 2026 18:59
@mpasternak
mpasternak merged commit 2f2f02b into dev Oct 24, 2026
24 checks passed
@mpasternak
mpasternak deleted the fix/haslo-dane-konta branch October 24, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant