Krótko
Użytkownik powinien móc zalogować się bez obowiązku samodzielnego zapamiętywania, przepisywania albo rozwiązywania testu poznawczego, jeśli dostępna jest pomoc lub alternatywa.
Zrozumiałość · Poziom AA
Uwierzytelnianie nie może opierać się wyłącznie na pamięci. Pozwól na kopiowanie i wklejanie, menedżery haseł albo inne opcje, na przykład weryfikację e-mailem.
Użytkownik powinien móc zalogować się bez obowiązku samodzielnego zapamiętywania, przepisywania albo rozwiązywania testu poznawczego, jeśli dostępna jest pomoc lub alternatywa.
Użytkownik zna swoje dane i ma prawo dostępu do konta, ale proces logowania wymaga od niego dodatkowego wysiłku poznawczego: zapamiętania hasła, przepisania kodu, rozwiązania zagadki albo rozpoznania obiektów na zdjęciach.
Problem pojawia się na przykład wtedy, gdy strona blokuje wklejanie hasła lub kodu, wymusza przepisywanie znaków z obrazka, każe wybrać wszystkie zdjęcia z sygnalizacją, nie działa z menedżerem haseł albo passkey, albo daje bardzo krótki czas na wpisanie kodu bez sensownego ponowienia.
3.3.8 nie zakazuje haseł, kodów ani zabezpieczeń. Wymaga, żeby przy teście funkcji poznawczych istniała pomoc, mechanizm wspierający albo dostępna alternatywa.
Dostępny proces logowania nie zmusza użytkownika do samodzielnego zapamiętywania i przepisywania danych, jeśli można mu pomóc. Dobre rozwiązania to na przykład:
Ważne: passkey, WebAuthn albo logowanie zewnętrznym dostawcą mogą pomagać, ale nie należy ich opisywać jako zweryfikowanej techniki W3C dla 3.3.8, jeśli Quick Reference oznacza je tylko jako potencjalne przyszłe techniki.
Niedostępne logowanie wymaga od użytkownika rozwiązania testu poznawczego i nie daje mu realnej pomocy ani alternatywy.
Kod — HTML
<form method="post" action="/login">
<label for="login-email">
Adres e-mail
</label>
<input
id="login-email"
name="email"
type="email"
autocomplete="email"
>
<label for="login-password">
Hasło
</label>
<input
id="login-password"
name="password"
type="password"
autocomplete="current-password"
>
<button type="submit">
Zaloguj się
</button>
</form>
Pola mają widoczne etykiety i atrybuty `autocomplete`, które pomagają przeglądarce oraz menedżerowi haseł rozpoznać dane logowania. Strona nie powinna blokować wklejania ani automatycznego uzupełniania.
Kod — HTML
<label for="one-time-code">
Kod jednorazowy
</label>
<p id="one-time-code-hint">
Możesz wkleić cały kod z wiadomości SMS albo e-mail.
</p>
<input
id="one-time-code"
name="one-time-code"
type="text"
inputmode="numeric"
autocomplete="one-time-code"
aria-describedby="one-time-code-hint"
>
Użytkownik może wkleić cały kod w takim formacie, w jakim go otrzymał. `aria-describedby` łączy pole z instrukcją, ale sama instrukcja pozostaje widoczna.
Kod — JavaScript
passwordInput.addEventListener("paste", function (event) {
event.preventDefault();
});
codeInput.addEventListener("paste", function (event) {
event.preventDefault();
});
To zły przykład. Blokowanie wklejania utrudnia użycie menedżera haseł i zmusza użytkownika do przepisywania hasła albo kodu. Taki JavaScript jest pokazany tylko jako fragment edukacyjny, nie działa na tej stronie.
Kod — HTML
<form method="post" action="/login-link">
<label for="login-link-email">
Adres e-mail
</label>
<input
id="login-link-email"
name="email"
type="email"
autocomplete="email"
>
<button type="submit">
Wyślij link do logowania
</button>
</form>
Link logowania wysłany e-mailem może być alternatywną ścieżką, która nie wymaga pamiętania hasła. Trzeba go zaprojektować bezpiecznie, ale polityka bezpieczeństwa nie jest głównym tematem tego kryterium.
Użytkownik musi pamiętać, przepisywać i rozwiązać test poznawczy.
Zabezpieczenie istnieje, ale proces nadal wymusza szybkie przepisywanie.
Użytkownik ma pomoc albo alternatywną ścieżkę logowania.
Automat może wykryć część problemów technicznych, ale nie oceni całego procesu uwierzytelniania.