C# Kullanıcı Parolası Nasıl Güvenli Saklanır? (Veritabanı Uyumlu)

Admin

Herşeyi Burada Bulabilirsin
Yönetici
Administrator
Akisor
Katılım
9 Haziran 2025
Mesajlar
66
Çözümler
1
Tepkime puanı
0
Puan
6
Konum
Türkiye
Web sitesi
akisforum.com
C# ile Kullanıcı Parolası Güvenli Şekilde Nasıl Saklanır?

🔐 Parolaları Düz Metin Olarak Saklamak Neden Tehlikelidir?
Eğer bir sistemde kullanıcı şifreleri doğrudan veri tabanına düz şekilde kaydediliyorsa bu çok büyük bir güvenlik açığıdır.
Bir sızıntı durumunda tüm kullanıcılar tehlikeye girer.

Doğru olan yöntem:
- Şifreyi **geri döndürülemez şekilde hash'lemek**
- Kullanıcı giriş yaptığında aynı algoritmayla tekrar hash'leyip karşılaştırmak
- Gerekirse **salt (tuzlama)** ile farklılaştırmak

🛠️ SHA256 + Salt ile Hash Üretimi (Tekrarlı Kullanım)
Aşağıdaki sınıfı hem parola kayıt ederken hem de kontrol ederken kullanabilirsin:

C#:
using System.Security.Cryptography;
using System.Text;

public static class SifreYonetimi
{
    public static string SifreHashOlustur(string parola, string salt)
    {
        using (SHA256 sha256 = SHA256.Create())
        {
            byte[] bytes = Encoding.UTF8.GetBytes(salt + parola);
            byte[] hash = sha256.ComputeHash(bytes);
            StringBuilder sb = new StringBuilder();
            foreach (byte b in hash)
                sb.Append(b.ToString("x2"));
            return sb.ToString();
        }
    }

    public static string SaltUret(int uzunluk = 16)
    {
        const string karakterler = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuilder sb = new StringBuilder();
        Random rnd = new Random();
        for (int i = 0; i < uzunluk; i++)
            sb.Append(karakterler[rnd.Next(karakterler.Length)]);
        return sb.ToString();
    }
}

💾 Veritabanında Nasıl Saklanır?
- Kullanıcının şifresi girilir → salt üretilir → SHA256 + salt hash yapılır
- Veritabanına **salt ve hash ayrı ayrı** kaydedilir

Tablo örneği:

ID KullaniciAdi Hash Salt

1 kerimbul 8290f7a1a6b... 9dj3s1la8sdj


🔐 Kullanıcı Girişte Nasıl Doğrulanır?
C#:
// Girişte kullanıcıdan gelen şifre ile DB'deki salt alınır
string girilenSifre = "Kerim123";
string veritabaniSalt = "9dj3s1la8sdj"; // DB'den çekilir
string kayitliHash = "8290f7a1...";     // DB'den çekilir

string girilenHash = SifreYonetimi.SifreHashOlustur(girilenSifre, veritabaniSalt);

if (girilenHash == kayitliHash)
    Console.WriteLine("✅ Giriş başarılı.");
else
    Console.WriteLine("❌ Hatalı şifre.");

🏁 Sonuç:
Parola güvenliği bir sistemin en zayıf halkası olabilir.
Bu yöntemle:
- Düz metin şifre saklamazsın
- Her şifre farklı bir hash üretir
- Database sızsa bile şifre geri çevrilemez olur


📚 Daha Fazla Oku:
 
Geri
Üst