ASP.NET MVC’de Şifrelerimizi Hashleme

Arkadaşlar hepinize merhabalar,

İlk makalemi şifreleme işlemlerinde kullanımını beğendiğim bir Nuget paketi üzerine yazmaya karar verdim. Öncelikle böyle bir işlem neden gerekli ondan bahsedeyim. Bir proje yaptınız ve projenize erişim sağlayan farklı rol gruplarından birden çok kullanıcı olsun. Takdir edersiniz ki her kullanıcının belirlediği şifre aynı zorluk düzeyinde olmayacağı gibi bunların içerisinde kolayca kırılabilen şifreler de mevcut olacaktır. Gün oldu bir gün bilgisayarınızın başına geçtiniz. Tabi yazılımcının kaderi de günlerden bir gün bilgisayarın başına geçmekle alakalı. 🙂 Bi baktınız ki kötü niyetli arkadaş veritabanınıza erişim sağlamış. Elimizde 2 senaryomuz olsun ;

1. Şifrelerimiz hashli şekilde tutuluyor senaryosu

Kötü niyetli arkadaş (yukarıda belirttiğim) veritabanına girdi, önüne tabloyu çarşaf gibi serdi. Ne görsün, şifreler çok afilli ve şekilli duruyor. En üst yetkili kullanıcıya sahip arkadaşın hesabına baktı. Sadece kullanıcı adını gördü ve onunla yetindi. Şimdi diyeceksiniz ki zaten veritabanına ulaşmış, bütün veriler elinde, şifreyi alsa ne olacak. 🙂 O kısım da tablolar üzerindeki verdiğiniz database işlem yetkilerine bağlı olarak değişecektir.

2. Şifrelerimiz hashli şekilde tutulmuyor senaryosu

Bu senaryoda artık yapılabilecek bir şey yoktur. Gözün gördüğünü gönül de ister hesabı gibi düşünebilirsiniz. Tüm kullanıcı bilgilerine elveda diyebilirsiniz.

Arkadaşlar şunu da eklemek istiyorum. Kurumsal bir yapıda çalışırken, sistemin en üst yetkilisi bile olsanız, kullanıcı şifrelerini bilmemeniz gerekmektedir. Şifre değişikliğinde elle müdahele değil, kullanıcıya şifremi unuttum, kod vs. yöntemleriyle kullanıcının yeni şifre belirlemesi daha doğru bir yöntemdir.

O zaman hashleme işlemimize başlayalım.

Project – Manage NuGet Packages menüsüne giriyoruz. Açılan pencerede Browse kısmına gelip SimpleCrypto yazıyoruz. Resimdeki paketi bulup, sağ taraftan Install’a tıklıyoruz. (Ben de önceden kurulum olduğu için Uninstall şeklinde görünmekte.)

 

 

Şimdi resimdeki gibi User adında bir model oluşturalım. (Database bağlantı işlemlerini ve User ile ilgili diğer propertyleri şimdilik geçiyorum. Örnek olması açısından en basit şekliyle anlatımı yapıyorum.)

Projemize indirdiğimiz paketi kullanarak kullanıcı kaydı yapalım. Hashleme işlemimizi paket içerisinde yer alan PBKDF2 algoritması ile yapıyoruz.

 

Hash : Algoritmanın, kendisine gönderilen şifre üzerinden ürettiği hash değeri.
Salt : Algoritma, salt işlemi için rastgele bir değer üretir. Daha sonra bu değer hash ile birleştirilerek salt değerini oluşturur.

Tablomuzdaki sonuçta bu şekilde.

 

Bir sonraki makalemde hash ve salt değerini kullanarak kullanıcı giriş işlemi nasıl yapılır onu anlatacağım.

Esenle kalın.

You may also like...

Bir cevap yazın

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