5

Bu biraz yumuşak bir soru, bunun için daha iyi bir yer varsa bana bildirmekten çekinmeyin.Kullanıcı beklentileri ve unicode normalizasyonu

Uluslararası karakterler gerektiren bir parola kabul eden bir kod geliştiriyorum - bu nedenle bir unicode dizgisini saklanan bir unicode dizesiyle karşılaştırmam gerekiyor. Yeterince kolay.

Sorum şu: Uluslararası karakter kümeleri kullanıcıları genellikle böyle bir durumda normalleşmeyi bekliyorlar mı? Google aramalarım, 'her zaman yap' (http://unicode.org/faq/normalization.html) '' rahatsız etmeyin '' için bazı fikir çatışmaları gösteriyor. Normalleştirmeyecek herhangi bir artı/eksiler var mı? (yani, bir şifreyi tahmin etme olasılığı daha düşüktür, vb.)

cevap

5

Parola alanınız Unicode girişini (muhtemelen UTF-8 veya UTF-16) kabul ederse, bunu karmaştırma ve karşılaştırmadan önce normalleştirmeniz önerilir. Normalleştirmezseniz ve insanlar farklı sistemlerden (farklı işletim sistemleri veya bir web uygulamasıysa veya farklı yerel ayarlarla farklı tarayıcılardan) erişirse, aynı şifreyi farklı normalleştirmeyle temsil edebilirsiniz. Bu, kullanıcınızın doğru şifreyi yazacağı, ancak reddettiği anlamına geleceği anlamına gelmez ve bunun neden düzeltileceği veya bunların düzeltilmesi için herhangi bir yolunun olmayacağı anlamına gelmez.

+0

Sağ. NFD formuna her şeyi dönüştür ve sakla. – tchrist

-3

Birkaç nedenden dolayı rahatsız olmaz: Olayların daha az güvenli hale getirmek için gidiyoruz

  1. . DB'nizde iki veya daha fazla karakterin tümü aynı şeyle temsil ediliyorsa, bu, site için daha az sayıda parola olduğu anlamına gelir. (Bu muhtemelen büyük bir anlaşma olmasa da, olası parolaların sayısı oldukça büyük olduğundan.)
  2. Programınıza, (muhtemelen) kütüphanenizin bir parçası olan karmaşık bir çalışma yapan bir kod oluşturuyor olacaksınız. yaz ... ve sonunda birileri sonuç olarak giriş yapamaz. Aklımda işleri basit tutmak ve farklı karakter kümeleri kullanan kişilerin bunları nasıl yazacaklarını bilmelerine güvenmek. Bununla birlikte, bunu asla uluslararası bir şifre biçiminde uygulamamıştım, bu yüzden standart tasarım modelinin ne olduğunu anlatamadım.