Node.js – bcrypt Modülü İle Parola Şifreleme
Merhaba,
Web platformunda kullanıcıyla etkileşim sonucu güvenliğine riayet edilmesi gereken bilgiler mevcuttur. Bu bilgiler; kullanıcı şifreleri, hesap veya kredi kartı bilgileri yahut kullanıcıya dair farklı hassasiyet barındıran mahiyette bilgiler olabilir. Kullanıcılar güvendikleri platformlarla bu bilgileri paylaşırken bir yandan da yasal olarak devlet tarafından bu durum güvence altına alınmakta ve kullanıcı için önem ve gizlilik arz eden tüm bilgilere sistem tarafından şifrelenme zorunluluğu getirilmekte hatta biz yazılımcıların bile erişemeyeceği derecede ilgili veriler şifrelenmiş bir şekilde veritabanına kaydedilmektedir.
Bu durum her ne kadar kullanıcı bazlı bilgi güvenliliğini getirsede biryandan da geri dönüşümü engellemektedir. Şifrelenmiş bilgilerin, kullanıcılar tarafından olası unutulma durumlarında kullanıcı talebi doğrultusunda bile ilgili veri aslına çevrilemeyeceği için her ne kadar veritabanında şifrelenmiş hali barındırılsada anlamsız bir veri arz edecektir. Dolayısıyla kullanıcıdan şifrelenmek üzere alınan verilerin geriye dönüşsüz şekilde şifreleneceği kullanıcıya bildirilmesi gerekmektedir.
Velhasıl hemen hemen her mimaride şifreleme algoritmaları bulunduğu gibi Node.js’de de bu yasal işlemi yerine getirecek bcrypt modülü mevcuttur.
bcrypt Modülünün Yüklenmesi
npm install bcryptjs --save
komutu aracılığıyla ilgili modülü projenize entegre edebilirsiniz.
Verilerin Şifrelenmesi
bcrypt modülü ile verileri şifreleyebilmek için “hash” fonksiyonunu kullanmaktayız.
const bcrypt = require("bcryptjs"); bcrypt.hash("Şifrelenecek Veri", 10, (error, result) => { response.send(result); });
Yukarıdaki kod bloğunu incelerseniz eğer “hash” fonksiyonunun ilk parametresinde şifrelenecek veriyi belirtiyoruz. Callback fonksiyondan gelecek olan “result” parametresi ise şifreleme sonucu üretilen değeri bizlere getirecektir.
Yukarıdaki ekran görüntüsünü incelerseniz eğer aynı veriyi birden fazla kez şifrelediğimizde her defasında farklı bir sonuç elde ettiğimizi görebilirsiniz. İşte bu sebepten dolayı şifrelenmiş verilerin tahmin edilebilme ihtimali oldukça düşük ve neredeyse imkansızdır.
Şifrelenmiş Verilerin Doğrulanması
Her ne kadar şifrelenmiş veriyi geri dönüştüremesekte, doğrulayabilmekteyiz. Bu işlem içinde bcrypt modülümüzün “compare” fonksiyonunu kullanmaktayız. “compare” fonksiyonu elimizdeki şifrelenmiş veri ile has/gerçek/esas veriyi kıyaslamakta ve sonucu boolean tipte bizlere döndürmektedir.
const bcrypt = require("bcryptjs"); bcrypt.hash("Gençay", 10, (error, result) => { bcrypt.compare("Gençay", result, (error, data) => { if (data) response.send(`"${result}" ile "Gençay" değerleri aynı.`); else response.send(`"${result}" ile "Gençay" değerleri farklı.`); }); });
Yukarıdaki kod bloğunu incelerseniz eğer şifrelenmiş veriyi “compare” fonksiyonu ile doğrulamaktayız.
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…
Teşekkürler güzel bir doküman olmuş