4 puan yazan GN⁺ 2024-04-24 | 3 yorum | WhatsApp'ta paylaş

Kimliklerde görsel olarak belirsiz karakterleri anlamak

  • Görsel olarak belirsiz karakterler, belirli yazı tiplerinde veya el yazısında ayırt edilmesi zor olan karakterlerdir
    • O/0, I/l/1/7, 5/S, 2/Z, 8/B, 6/G, 9/q/g buna dahildir
  • Bu karakterler veri girişi sırasında hata ve karışıklığa yol açabilir
    • Kullanıcının O ile 0'ı ayırt edemeyip yanlış kod girmesi gibi, kötü bir kullanıcı deneyimine neden olabilir
  • Kimliğin sözlü olarak iletildiği veya elle yazılması gereken durumlarda özellikle önemlidir
    • müşteri desteği, indirim kodu, takip kodu, hata kimliği, ürün kimliği vb.

Büyük/küçük harf ayrımı yapılıp yapılmayacağına karar vermek

  • Kimliklerde büyük/küçük harf ayrımı yapılıp yapılmayacağına karar verilmelidir
    • Büyük/küçük harf ayrımı varsa, görsel belirsizlik dışlandığında seçilebilecek karakter sayısı 53'tür
    • Büyük/küçük harf ayrımı yoksa seçilebilecek karakter sayısı 22'dir
  • Kimlik uzunluğu 5 karakter olduğunda olası kimlik sayısı:
    • Büyük/küçük harf ayrımı var: 53^5 = 418,195,493
    • Büyük/küçük harf ayrımı yok: 22^5 = 5,153,632
  • Ancak kimlik uzunluğu arttıkça mümkün olan kimlik sayısı geometrik olarak artar
  • Bu nedenle kimlik uzunluğu ile görsel belirsizlik olasılığı arasında bir denge bulunmalıdır
  • Ayrıca hem büyük hem küçük harf kullanmak, büyük/küçük harf ayrımı yapmayan üçüncü taraf sistemlerde beklenmedik sorunlara yol açabilir

Görsel olarak net karakter kümesi

  • Okunabilirlik öncelikliyse, aşağıdaki karakter kümesinin kullanılması önerilir:
    • [ "a", "b", "c", "d", "e", "f", "h", "i", "j", "k", "m", "n", "o", "p", "r", "s", "t", "w", "x", "y", "3", "4"]

Ek değerlendirmeler

  • Belirli karakter kombinasyonları başka karakterler gibi görünebilir (rn'in m gibi, 3'ün w gibi görünmesi gibi)
    • Kimlik üretim aşamasında bu tür kombinasyonlardan kaçınmak iyi olur
  • Telaffuzu benzer karakterlerden de kaçınmak iyi olur (b ile p gibi)
    • Özellikle kimliğin sözlü olarak iletildiği durumlarda önemlidir

Mevcut örnekler

  • Crockford's Base32: Belirsiz karakterleri aynı değere decode eder ve istemeden küfür oluşma ihtimalini de dikkate alır
  • Open Location Code: 23456789CFGHJMPQRVWX karakter kümesini kullanır. Görsel belirsizlikten kaçınmanın yanı sıra, yaygın dillerde kelime oluşumunu da önlemeyi amaçlar. Ancak 6/G ve 9/Q dahildir.

GN⁺ görüşü

  • Kimlik üretiminde kullanılabilirlik ve okunabilirlik en yüksek öncelik olmalıdır. Özellikle kimliğin sözlü olarak iletildiği veya elle yazılması gereken durumlar sık yaşanıyorsa bu daha da önemlidir.
  • Görsel belirsizliği en aza indirebilen bir karakter kümesi seçerken, kimlik uzunluğu ile mümkün kombinasyon sayısı arasında uygun bir denge bulmak önemlidir.
  • Ayrıca üçüncü taraf sistemlerle entegrasyon sırasında beklenmedik sorunlar çıkabileceği için, büyük/küçük harf ayrımı dikkatle kararlaştırılmalıdır.
  • Kimlik üretim mantığında belirli karakter kombinasyonlarını dışlamak veya telaffuzu benzer karakterlerden kaçınmak gibi ek değerlendirmeler de gereklidir.
  • Crockford's Base32 veya Open Location Code gibi örneklerden yararlanarak, projenin gereksinimlerine uygun en iyi karakter kümesini tasarlamak yerinde olacaktır.

3 yorum

 
roxie 2025-01-29
 
roxie 2025-01-29

Telaffuzu bile hesaba katmış olmaları gerçekten hayranlık verici.

 
GN⁺ 2024-04-24
Hacker News yorumu
  • Gerçek sahada, milyonlarca cihaza belirsiz karakterler içeren seri numaraları verilmesi nedeniyle müşteri desteğinde büyük zorluklar yaşanan bir örnek var. Düzenli ifadelerle yazım hatası varyasyonları üretip veritabanıyla karşılaştırarak gerçek seri numarasını tahmin etmeye çalışmak tam bir kâbustu.
  • Kullanıcıya göre farklı kodlama yöntemleri kullanılmalı. Base32, net bir karakter kümesine sahip olduğu için uygun; sözlü olarak aktarırken ise kelime listesi gösterimi (ör. "TIDE ITCH SLOW REIN RULE MOT") kullanmak iyi olur. Ancak deyimler, eşsesliler, lehçeler gibi tuzaklar bulunduğundan kendi kelime listenizi oluşturmamalısınız.
  • CPAN'e şaka yollu yüklenen rastgele taban aritmetiği modülü (Math::Fleximal) yüzünden beklenmedik destek talepleri alınmıştı. Bunun nedeni, birinin onaltılık sayıları alfasayısal koda dönüştüren demo kodunu production'da kullanmasıydı.
  • Nintendo Switch'in DLC seri numarası giriş ekranında belirsiz karakterlerin tuşları devre dışı bırakılarak UX iyileştiriliyor.
  • El yazısıyla yazıldığında ayırt etmesi zor olan karakterlerden de kaçınılmalı. Özellikle '7' ile '1' kolayca karışabiliyor.
  • Hem büyük hem küçük harf kullanılırsa, büyük/küçük harf duyarsız sistemler veya protokoller yüzünden sonradan şaşırabilirsiniz. Kullanıcı kolaylığı gerekçesiyle bunu bug olarak görmeyen ticari sistemler de var.
  • 2FA yedek kodlarını kâğıda her yazdığımda bazı karakterlerde (o/0, v/u, 5/S vb.) içimi bir tedirginlik kaplıyor. Bundan kaçınmak için bazen karakterlere ek işaretler ekliyorum.
  • Wi‑Fi parolası olarak, üçüncü sınıftaki bir çocuğun bile doğru heceleyebileceği günlük bir kelimeyi ("vacation") seçiyorum.
  • KeepassXC, karakter türüne göre (büyük harf, küçük harf, sayı, sembol vb.) farklı renkler kullanarak okunabilirliği büyük ölçüde artırıyor.
  • Bitcoin adresleri, değiştirilmiş Base58 kodlaması kullanır.
  • Yazıda Arial yazı tipi yanlışlıkla Ariel olarak yazılmış.