Raylar, bir genel olarak önceden varolan bir kütüphane kullanımı olacaktır. Doğrulama yanlış yapmak kolaydır, ve sorun tekrar çözmek için çaba nadiren değer olduğunu pek çok kez çözüldü oldu. Eğer kendi uygulama yazmak isteyen varsa, o zaman modern bir kimlik nasıl çalıştığını anlatacağım.
Bir kullanıcı kimlik doğrulama yöntemi, naif bir veritabanındaki parola saklamak ve kullanıcı gönderen parolası ile mukayese etmektir. Bu basit ama inanılmaz güvensiz. Veritabanını okuyabilen herkes kimsenin şifresini görebilirsiniz. Eğer veritabanı erişimi denetimleri koymak bile, (ve kullanıcıların) çevrelerindeki kesmek herkese açıktır.
Uygun formu sonra gönderilen her zaman seçilir ve zaman parolayı işlemek için bir kriptografik hash fonksiyonu kullanmaktır. İyi bir karma işlevi pratikte geri döndürülemez - Eğer bir karma almak ve bir parola haline geri dönemeyiz. Kullanıcı açtığında Yani, sunulan şifre, hash sürer, ve veritabanındaki karma karşılaştırın. Bu şekilde, parola kendisini saklamak asla. Kullanıcı şifresini unutursa olumsuz, bunu sıfırlamak yerine onlara göndermek zorunda.
Hatta bu, ancak, belirli saldırılara karşı savunmasız olduğunu. O sadece sözlükte her kelime alır ve o kelimeyi sağlamalarının, orijinal ile tutmak: Bir saldırganın şifre sağlamalarının ele alır ve parolalarınızı karma nasıl biliyorsa, o zaman bir sözlük saldırısı yapabilir. Bu veri yapısı bir gökkuşağı tablo denir. Sözlük kelimesi sağlamalarının herhangi bir şifre karma neticesinde eğer, saldırgan şifre o şifre sağlamalarının sözlük kelime olduğunu söyleyebiliriz. Kısacası, veritabanı okuyabilirsiniz saldırgan hala zayıf şifreleri ile hesaplarına giriş yapabilirsiniz.
Çözelti, bir şifre karma önce, her bir kullanıcı için benzersiz olan bir tuzu olarak adlandırılan bir değer ile (genellikle birleştirilmiş veya xor'd) bir araya getirilmiş olmasıdır. Bu rastgele oluşturulmuş olabilir, ya da bir hesap oluşturma damgası ya da böyle olabilir. Her şifre aslında biraz farklı karma çünkü Sonra, bir saldırganın bir gökkuşağı tablo kullanamazsınız; o engelleyici hesaplama pahalı olacaktır (pratikte her hesap için) her farklı tuz için ayrı bir gökkuşağı tablo oluşturmak gerekir.
Ben diğer cevap verenlere tavsiye yankı: Bu basit şeyler değil, ve daha önce yapılmış çünkü bunu yapmak gerekmez, ve bunu kendiniz yaparsanız bir hata yapma çok iyi bir şansı ve yanlışlıkla ödün Sisteminizin güvenlik. Sebebi ne olursa olsun, gerçekten, gerçekten bir kendiniz yazmak istiyorsanız, Ama, ben nasıl yapıldığını bir (incomplete!) taslak sağladı umuyoruz.