- 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:
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?
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:

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

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();
}
}

- 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

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.");

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

-
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
-
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
-
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.