WCAG Başarı Kriterleri · Level AA
WCAG 3.3.8: Erişilebilir Kimlik Doğrulama (Asgari)
WCAG 3.3.8, kimlik doğrulama süreçlerinin, alternatif bir yöntem veya yardım sunulmadıkça, parolaları ezberleme, bulmaca çözme veya karakterleri kopyalama gibi bilişsel işlev testlerine dayanmamasını gerektirir. Bu, bilişsel engelleri olan kullanıcıların dijital hizmetlerden dışlanmasını önler.
Bu Kuralın Anlamı
WCAG 3.3.8 Erişilebilir Kimlik Doğrulama (Asgari), WCAG 2.2 ile getirilen Seviye AA ölçütüdür. Buna göre, bilişsel işlev testi — bir kullanıcının bilgiyi hatırlamasını, işlemesini veya aktarmasını gerektiren görev — aşağıdaki koşullardan en az biri sağlanmadıkça, kimlik doğrulama adımını tamamlamanın tek yolu olamaz:
- Alternatif yöntem: Bilişsel işlev testine dayanmayan başka bir kimlik doğrulama yolu sunulmalıdır (örneğin, e-posta ile gönderilen sihirli bağlantı, biyometrik giriş veya bir geçiş anahtarı).
- Yardımcı mekanizma: Kullanıcı aracısının veya üçüncü taraf bir aracın, kullanıcı adına bu adımı tamamlamasına izin verilmelidir — örneğin, kimlik bilgilerini otomatik dolduran bir parola yöneticisi veya tek kullanımlık kod için kopyala-yapıştır işlemi.
- Nesne tanıma istisnası: Bilişsel işlev testi, bir görüntüdeki nesneyi tanımayı içeriyorsa (örneğin, trafik ışığı içeren tüm görüntüleri seçmek) — bu tür bir test Asgari (AA) seviyesinde kabul edilir.
- Kişisel içerik istisnası: Test, kullanıcının kendisinin sağladığı içeriğe dayanıyorsa, örneğin bir ızgaradan daha önce yüklediği bir fotoğrafı seçmek gibi.
Pratikte, yalnızca kullanıcı adı ve parola gerektiren bir giriş formu, form tarayıcı otomatik doldurma ve parola yöneticilerinin çalışmasına izin verdiği sürece (yani alanlar standart <input type='password'> kullanıyor ve yapıştırma engellenmiyorsa) bu ölçüte uyar. Bozulmuş metni başka bir kimlik doğrulama yolu olmadan yazmayı gerektiren bir CAPTCHA açık bir başarısızlıktır. Kullanıcılardan bir kategoriyle eşleşen görüntüleri seçmesini isteyen (nesne tanıma) bir CAPTCHA, AA seviyesinde kabul edilir ancak AAA seviyesinde (3.3.9) daha sıkı ele alınır.
Ölçüt, kimlik doğrulama sürecinin tüm adımlarına uygulanır: ilk giriş, ek doğrulama (step-up), çok faktörlü doğrulama, hesap kurtarma ve oturumun yeniden doğrulanması. Ayrıca yalnızca birincil oturum açma ekranı değil, işlevselliğe erişimi koruyan her türlü sürece de uygulanır.
Önemli bir teknik sonuç olarak, geliştiriciler kimlik doğrulama alanlarında autocomplete='off' kullanmamalı, JavaScript olay işleyicileriyle yapıştırmayı devre dışı bırakmamalı ve yardımcı teknolojilerin ve tarayıcı otomatik doldurmanın doğru çalışmasını sağlayan standart girdi semantiğini bozmamalıdır.
Neden Önemli
Kimlik doğrulama, insanların günlük olarak kullandığı neredeyse tüm dijital hizmetlere — bankacılık, sağlık portalları, kamu hizmetleri, e-ticaret ve iletişim platformları — açılan kapıdır. Bu kapı bilişsel engeller koyduğunda, nüfusun önemli bir bölümünü sistematik olarak dışlar.
Bilişsel engeller geniş bir yelpazeyi kapsar: disleksi, diskalkuli, dikkat eksikliği bozuklukları, edinilmiş beyin hasarları, demans, zihinsel yetersizlikler ve anksiyete bozuklukları. Dünya Sağlık Örgütü, dünya genelinde yaklaşık her 6 kişiden 1’inin önemli bir engel yaşadığını ve bilişsel ile nörolojik durumların en büyük kategorilerden birini oluşturduğunu tahmin etmektedir. Bu kullanıcılar için bozulmuş karakter dizisini doğru şekilde yazmak, zaman baskısı altında görsel bir bulmacayı çözmek veya bir kimlik doğrulama uygulaması ile giriş formu arasında gidip gelmek gerçekten imkânsız ya da son derece yorucu olabilir.
Somut bir senaryo düşünün: Disleksili bir kişi, tahlil sonuçlarını görmek için sağlık sigortası portalına giriş yapmaya çalışıyor. Site, sesli alternatif veya atlama yolu olmayan bir metin CAPTCHA sunuyor. Bozulmuş harf biçimleri bu kullanıcı için ayırt edilemez ve girdi alanı yapıştırmayı engelliyor. Birkaç başarısız denemeden sonra hesap kilitleniyor. Kullanıcı, zamana duyarlı tıbbi bilgilere erişemiyor. Bu, varsayımsal bir uç durum değil — milyonlarca insan için rutin bir deneyim.
Switch erişimi veya göz takibi cihazlarına güvenen motor engelli kullanıcılar da etkilenir. Ayrı bir cihazdan karmaşık bir tek kullanımlık parolayı yeniden yazmak veya görsel kutucukları belirli bir sıraya sürüklemek, bu giriş yöntemleriyle fiziksel olarak imkânsız olabilir. Kopyala-yapıştır veya geçiş anahtarı tabanlı kimlik doğrulamaya izin vermek, engeli tamamen ortadan kaldırır.
Yaşlı yetişkinler de önemli bir grubu temsil eder. Yaşa bağlı bilişsel gerileme, hafızayı ve işlem hızını etkiler; bu da karmaşık CAPTCHA’ları ve çok adımlı ezberleme görevlerini orantısız derecede zorlaştırır. Türkiye’de ve dünya genelinde nüfus yaşlandıkça, erişilebilir kimlik doğrulama için iş ve düzenleyici gerekçe her yıl daha da güçlenmektedir.
Kullanılabilirlik ve dönüşüm açısından bakıldığında, kimlik doğrulama akışlarındaki sürtünme doğrudan terk oranlarını artırır. Metin CAPTCHA’larını risk tabanlı kimlik doğrulama veya geçiş anahtarlarıyla değiştiren e-ticaret platformları, tutarlı şekilde daha yüksek giriş tamamlama oranları ve kilitli hesaplarla ilgili daha düşük destek maliyetleri bildirmektedir.
İlgili Axe-core Kuralları
WCAG 3.3.8, otomatik araçlar bir kimlik doğrulama sürecinin erişilemez bir bilişsel işlev testi dayatıp dayatmadığını tam olarak değerlendiremeyeceği için manuel test gerektiren bir ölçüt olarak sınıflandırılır. Bir giriş akışının alternatif bir yolu olup olmadığını veya yapıştırmanın bağlama bağlı bir şekilde engellenip engellenmediğini belirlemek, canlı bir kimlik doğrulama akışıyla insan yargısı ve etkileşimi gerektirir. Bununla birlikte, bazı otomatik kontroller bu ölçütü destekler:
- Manuel inceleme — kimlik doğrulama akışı denetimi: Test uzmanları her kimlik doğrulama adımını baştan sona geçmeli ve bir bilişsel işlev testi olup olmadığını, varsa uyumlu bir alternatif veya yardımcı mekanizma bulunup bulunmadığını belirlemelidir. Şu anda bu ölçüt için otomatik olarak tetiklenen bir axe-core kuralı yoktur; çünkü mantık, yalnızca işaretlemeyi değil, form alanlarının ve çevresindeki arayüzün amacını ve bağlamını anlamaya dayanır.
- autocomplete özniteliği kontrolleri (ilgili): Axe-core’un
autocomplete-validkuralı,autocompleteözniteliği değerleri WCAG 1.3.5 belirteç listesinden alınmamış girdi alanlarını işaretler. Bu kural doğrudan 1.3.5’i hedeflese de, 3.3.8 için destekleyici bir kontroldür:autocomplete='username'veautocomplete='current-password'eksik veya yanlış ayarlanmışsa, parola yöneticileri otomatik doldurma yapamaz ve standart parola girişini 3.3.8 kapsamında uyumlu kılan yardımcı mekanizma ortadan kalkar. - Yapıştırmayı engelleme tespiti — manuel: Otomatik tarayıcılar, kimlik doğrulama girdilerinde
pasteolaylarını yakalayıp bastıran JavaScript’i güvenilir şekilde tespit edemez. Manuel bir test uzmanı, her ilgili alana bir kimlik bilgisi veya OTP yapıştırmayı denemeli ve işlemin başarılı olduğunu doğrulamalıdır. - CAPTCHA alternatifi tespiti — manuel: Axe-core, yaygın CAPTCHA bileşenlerinin (örneğin reCAPTCHA iframe’leri) varlığını tespit edebilir ancak sayfanın başka bir yerinde veya farklı bir yolla alternatif bir kimlik doğrulama yolu sunulup sunulmadığını belirleyemez. Bu tespit, tam kimlik doğrulama kullanıcı deneyiminin manuel incelenmesini gerektirir.
Nasıl Test Edilir
- Otomatik tarama (axe DevTools / Lighthouse): Her kimlik doğrulama sayfasında (giriş, kayıt, hesap kurtarma, MFA) axe DevTools çalıştırın. Kullanıcı adı ve parola alanlarında
autocomplete-validihlallerine bakın. Lighthouse’ta, form ile ilgili sorunlar için Erişilebilirlik denetimini inceleyin. Hiçbir otomatik kuralın 3.3.8 ihlalini kesin olarak işaretlemeyeceğini unutmayın — otomatik sonuçlar yalnızca bir başlangıç noktasıdır. - Tüm bilişsel işlev testlerini belirleyin: Kimlik doğrulama akışındaki her adımı manuel olarak listeleyin. Kullanıcının mevcut ekranda verilmeyen bilgiyi hatırlamasını, karakterleri yazmasını, bir bulmacayı çözmesini veya bir hesaplama yapmasını gerektiren her adımı not edin. Bu tür her adım için uyumlu bir alternatif (nesne tanıma, kişisel içerik, alternatif giriş yöntemi veya yardımcı mekanizma) olup olmadığını kontrol edin.
- Yapıştırma işlevini test edin: Her kimlik doğrulama girdisinde (kullanıcı adı, parola, OTP, kurtarma kodu) klavye kısayolunu kullanarak (Windows/Linux’ta Ctrl+V, macOS’ta Cmd+V) metin yapıştırmayı deneyin. Yapıştırılan içeriğin alanda göründüğünü doğrulayın. Sağ tıklama bağlam menüsünü kullanarak tekrarlayın. Yapıştırma engelleniyorsa, bilişsel işlev içermeyen bir alternatif yoksa bu bir başarısızlıktır.
- Parola yöneticisiyle otomatik doldurmayı test edin: Parola yöneticisi olan bir tarayıcı (yerleşik veya eklenti tabanlı) kullanarak kayıt sırasında kimlik bilgilerini kaydedin ve ardından giriş sayfasına dönün. Parola yöneticisinin alanları algılayabildiğini ve otomatik doldurabildiğini doğrulayın. Başlıca AT+tarayıcı kombinasyonlarını kapsamak için Firefox+NVDA, Safari+VoiceOver (macOS/iOS) ve Chrome+JAWS ile test edin. Alanlar standart olmayan işaretleme kullanıyorsa veya JavaScript otomatik doldurulan değerleri temizliyorsa, bu bir başarısızlıktır.
- NVDA + Firefox — ekran okuyucu ile gezinme: Giriş formunda yalnızca klavye ve NVDA kullanarak gezinin. Her alanın erişilebilir olduğunu, alan etiketlerinin doğru şekilde seslendirildiğini ve varsa CAPTCHA bileşeninin erişilebilir bir alternatifi olduğunu doğrulayın. CAPTCHA yalnızca görselse, sesli seçenek yoksa ve alternatif bir giriş yolu sunulmuyorsa, bir başarısızlık kaydedin.
- VoiceOver + Safari (iOS): Mobil bir cihazda, site biyometrik giriş sunuyorsa Face ID veya Touch ID kullanarak giriş yapmayı deneyin. Biyometrik seçeneğin kaydırma ile gezinme yoluyla erişilebilir olduğunu ve VoiceOver tarafından doğru şekilde seslendirildiğini doğrulayın. Bu, bilişsel işlev içermeyen bir alternatifin yalnızca teorik olarak değil, fiilen erişilebilir olduğunu doğrular.
- Bilişsel adımlardaki zaman sınırlarını kontrol edin: Bir CAPTCHA veya OTP girişi zaman sınırı koyuyorsa, kullanıcının bu sınırı uzatıp uzatamayacağını veya devre dışı bırakıp bırakamayacağını (2.2.1 ile ilgili) doğrulayın ve ayrıca zaman sınırlı adımın, alternatifi olmayan bir bilişsel işlev testi oluşturup oluşturmadığını not edin.
Nasıl Düzeltilir
Alternatifsiz metin CAPTCHA — Hatalı
<!-- 3.3.8’i karşılamaz: tek kimlik doğrulama yöntemi bozulmuş metni yazmak;
alternatif giriş yolu yok ve yapıştırma devre dışı -->
<form action='/login' method='post'>
<label for='user'>Username</label>
<input type='text' id='user' name='username'>
<label for='pass'>Password</label>
<input type='password' id='pass' name='password'
autocomplete='off'
onpaste='return false;'>
<img src='/captcha-image.png' alt=''>
<label for='captcha'>Type the characters above</label>
<input type='text' id='captcha' name='captcha'
autocomplete='off'
onpaste='return false;'>
<button type='submit'>Log in</button>
</form>
Alternatifsiz metin CAPTCHA — Doğru
<!-- 3.3.8’i karşılar: metin CAPTCHA, geçiş anahtarı / sihirli bağlantı seçeneğiyle değiştirilmiş;
parola alanı, parola yöneticilerinin yardımcı olabilmesi için otomatik doldurma ve yapıştırmayı destekler -->
<form action='/login' method='post'>
<label for='user'>Username or email</label>
<input type='text' id='user' name='username'
autocomplete='username'>
<label for='pass'>Password</label>
<input type='password' id='pass' name='password'
autocomplete='current-password'>
<!-- CAPTCHA yok; bot koruması sunucu tarafında risk tabanlı sinyallerle sağlanır -->
<button type='submit'>Log in</button>
</form>
<!-- Bilişsel işlev içermeyen alternatif her zaman görünür -->
<p><a href='/magic-link'>Send me a sign-in link by email instead</a></p>
<p><a href='/passkey-login'>Sign in with a passkey or biometrics</a></p>
Yapıştırmayı engelleyen OTP alanı — Hatalı
<!-- 3.3.8’i karşılamaz: kullanıcı 6 haneli OTP’yi elle yazmak zorunda;
yapıştırma engellenerek bir aktarma görevi zorunlu kılınır -->
<label for='otp'>Enter the 6-digit code from your authenticator app</label>
<input type='text' id='otp' name='otp'
inputmode='numeric'
maxlength='6'
autocomplete='off'
onpaste='event.preventDefault();'
ondrop='event.preventDefault();'>
Yapıştırmayı engelleyen OTP alanı — Doğru
<!-- 3.3.8’i karşılar: yapıştırma ve otomatik doldurma serbest;
autocomplete='one-time-code' mobilde işletim sistemi düzeyinde SMS/OTP otomatik doldurmayı etkinleştirir -->
<label for='otp'>Enter the 6-digit code from your authenticator app</label>
<input type='text' id='otp' name='otp'
inputmode='numeric'
maxlength='6'
autocomplete='one-time-code'>
<!-- Tüm yapıştırma/bırakma engelleme işleyicilerini kaldırın.
Kimlik bilgisi doldurma riski, yapıştırmayı engelleyerek değil, sunucu tarafında yönetilir. -->
Yedek yolu olmayan görsel seçim CAPTCHA’sı (AAA sorunu, AA uyumlu) — AA seviyesinde doğru
<!-- 3.3.8’i (AA) karşılar: nesne tanıma CAPTCHA’ları,
Asgari seviyede açıkça istisna tutulmuştur. Bisiklet içeren
görüntüleri seçmek, karakter yazımı değil, nesne tanıma sayılır.
Not: Bu, 3.3.9’u (AAA) karşılamaz — tam uyum için bir alternatif sağlayın. -->
<fieldset>
<legend>Select all images that contain a bicycle</legend>
<ul role='list'>
<li>
<input type='checkbox' id='img1' name='captcha' value='1'>
<label for='img1'>
<img src='/grid/img1.jpg' alt='A city street with parked vehicles'>
</label>
</li>
<!-- additional grid items -->
</ul>
</fieldset>
Yaygın Hatalar
- Parola alanlarında
autocomplete='off'kullanmak: Bu, parola yöneticisi otomatik doldurmayı devre dışı bırakır ve standart parola kimlik doğrulamasını uyumlu kılan yardımcı mekanizmayı ortadan kaldırır. Bunun yerineautocomplete='current-password'kullanın ve kimlik bilgisi depolamayı tarayıcıya bırakın. onpaste='return false;'veyaaddEventListener('paste', e => e.preventDefault())ile yapıştırmayı engellemek: Bu, kullanıcıları kimlik bilgilerini elle yazmaya zorlayarak erişilemez bir aktarma görevi yaratır. Kimlik doğrulama girdilerinden tüm yapıştırma engelleme işleyicilerini kaldırın.- Klavye ile erişilemeyen bir geçiş anahtarı seçeneği sunmak: Biyometrik alternatif, yalnızca klavye ve yardımcı teknoloji ile erişilebilir ve kullanılabilir olduğunda 3.3.8’i karşılar. Bir hover menüsünün arkasına gizlenmiş veya odaklanamayan bir
<div>olarak sunulan geçiş anahtarı düğmesi, uyumlu bir alternatif sayılmaz. - Bot azaltma stratejisi olarak yalnızca metin CAPTCHA kullanmak: Risk tabanlı, sunucu tarafı bot tespitine (cihaz parmak izi, yazma hızı, IP itibarı analizine) geçmek, güvenlikten ödün vermeden bilişsel işlev testini tamamen ortadan kaldırır. Yalnızca istemci tarafı CAPTCHA’ya güvenmek hem erişilebilirlik açısından bir başarısızlık hem de zayıf bir güvenlik uygulamasıdır.
- OTP’yi birden fazla tek karakterlik girdiye bölmek ve alanlar arası yapıştırmayı engellemek: Bazı uygulamalar, OTP girişi için altı ayrı
<input maxlength='1'>alanı kullanır ve odağı JavaScript ile otomatik ilerletir. Bu desen, parola yöneticilerinden yapıştırmayı sıkça bozar ve uygulama, kodun tamamını ilk alana yapıştırmayı açıkça destekleyip karakterleri doğru şekilde dağıtmadıkça 3.3.8’i ihlal eder. - Yalnızca hesap kurtarma akışlarında görsel CAPTCHA zorunlu kılmak: Ekipler, ana giriş sayfasına erişilebilir giriş alternatifleri ekleyip ek doğrulama, parola sıfırlama ve hesap kilidi açma akışlarını unutabilir. Bunların her biri ayrı bir kimlik doğrulama adımıdır ve 3.3.8’e bağımsız olarak uymalıdır.
- Sesli CAPTCHA’yı metin CAPTCHA’ya tam alternatif saymak: Sesli alternatif, görme engelli kullanıcılara yardımcı olur ancak bilişsel engelli kullanıcılar veya gürültülü ortamlardakiler için çözüm değildir. Sesli CAPTCHA’lar da kendi aktarma gereksinimlerini getirir. Doğru çözüm, CAPTCHA’yı tamamen kaldırmak veya hiç bilişsel işlev testi içermeyen bir yol sunmaktır.
- Parola yöneticisi tespitini bozan dinamik girdi alanı ID’leri üretmek: Kullanıcı adı ve parola alanlarındaki
idöznitelikleri her sayfa yüklemesinde rastgeleleştirildiğinde (yanlış yönlendirilmiş bir anti-bot tekniği), parola yöneticileri alanları güvenilir şekilde tanıyamaz. Bu, otomatik doldurmayı fiilen devre dışı bırakır ve uyumlu yardımcı mekanizmayı ortadan kaldırır. - Üçüncü taraf CAPTCHA bileşenlerinin otomatik olarak uyumlu olduğunu varsaymak: Popüler CAPTCHA hizmetleri erişilebilir varyantlar sunabilir ancak bunlar varsayılan olarak etkin değildir. Geliştiriciler erişilebilir sürümü açıkça yapılandırmalı ve yalnızca yeni bir erişilemez test türü eklemek yerine, standardın gerekliliklerini karşıladığını da doğrulamalıdır.
- Otomatik doldurulan değerleri odaklanınca JavaScript ile temizlemek: Bazı formlar, yer tutucu metin göstermek veya yeniden giriş istemek için alan odaklandığında içeriği temizler. Bu davranış, parola yöneticisinin otomatik doldurduğu değeri temizlerse, manuel yeniden girişi zorunlu kılar ve 3.3.8’i karşılamaz.
Türkiye’nin Erişilebilirlik Mevzuatıyla İlişkisi
Türkiye’nin 21 Haziran 2025 tarihli ve 32933 sayılı Resmî Gazete’de yayımlanan 2025/10 sayılı Cumhurbaşkanlığı Genelgesi, WCAG 2.2 ile uyumlu web ve mobil erişilebilirlik yükümlülükleri getirmektedir. Genelge, kapsamdaki kurumların dijital ürün ve hizmetlerinde Seviye AA uyumunu sağlamasını zorunlu kılar. WCAG 2.2’de Seviye AA ölçütü olan WCAG 3.3.8, bu nedenle genelgeyle getirilen zorunlu uyum gerekliliklerinin doğrudan kapsamındadır.
Genelge, geniş bir özel ve kamu sektörü yelpazesini kapsar. Kamu kurumları ve devlet kuruluşları tam AA uyumu sağlamak zorundadır. Özel sektörde ise genelge; e-ticaret platformları, bankalar ve finans kuruluşları, hastaneler ve özel sağlık hizmeti sağlayıcıları, 200.000 ve üzeri abonesi olan telekom operatörleri, seyahat acenteleri, özel ulaşım şirketleri ve Millî Eğitim Bakanlığı (MEB) tarafından yetkilendirilmiş özel okullar için geçerlidir. Bu kuruluşlar için, desteklenmeyen CAPTCHA’lara sahip giriş sayfaları veya yapıştırmayı engelleyen OTP alanları gibi erişilemez kimlik doğrulama akışları, doğrudan düzenleyici risk yaratır.
Aile ve Sosyal Hizmetler Bakanlığı tarafından verilen Erişilebilirlik Logosu, Türkiye’de dijital erişilebilirlik uyumunun resmî sertifikasyon işaretidir. Bu logonun alınması, 3.3.8’i de kapsayan Seviye AA uyumunun gösterilmesini gerektirir. E-ticaret işletmeleri, bankalar ve diğer yüksek trafikli dijital hizmet sağlayıcıları için logo, kamuya güven işareti olarak hizmet eder ve tedarik ile ihale şartnamelerinde referans alınabilir. Erişilemez bilişsel testlere dayanan kimlik doğrulama akışları, sertifikasyonu engeller ve kurumu şikâyet ve yaptırım riskine açık hale getirir.
Pratik uyum açısından, Türk kuruluşları Erişilebilirlik Logosu değerlendirmesine başvurmadan önce, giriş, kayıt, MFA, parola sıfırlama ve hesap kilidi açma dahil tüm kimlik doğrulama temas noktalarını 3.3.8’e göre denetlemelidir. Metin CAPTCHA’larını risk tabanlı sunucu tarafı kontrollerle değiştirmek, tüm kimlik bilgisi alanlarında autocomplete özelliğini etkinleştirmek ve geçiş anahtarı veya sihirli bağlantı alternatifleri sunmak, en yüksek etkili iyileştirme adımlarıdır. Bu değişiklikler, düzenleyici gerekliliği karşılarken aynı zamanda dijital hizmetleri kullanan ve sayıları Türkiye’de yaklaşık 8,5 milyon olarak tahmin edilen engelli kişiler için kimlik doğrulama deneyimini iyileştirir.
