Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

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.
Node.js - bcrypt Modülü İle Parola Şifreleme
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.
Node.js - bcrypt Modülü İle Parola Şifreleme

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. Ömer Cihat ATA dedi ki:

    Teşekkürler güzel bir doküman olmuş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir