Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Parolaları veritabanında güvenli saklamak: hash, salt ve doğru algoritma

elif.aydin Mid 18 saat önce · 2 görüntülenme

Veritabanı sızıntıları her gün yaşanıyor. Sızıntı olduğunda kullanıcılarının parolalarının açığa çıkıp çıkmayacağını, parolaları nasıl sakladığın belirler.

Asla yapılmaması gerekenler

  • Düz metin saklamak.
  • Şifrelemek (AES vb.). Şifreleme geri çevrilebilir; anahtar sızarsa tüm parolalar açılır. Parolayı geri okumana hiçbir zaman gerek yok.
  • MD5, SHA-1 ya da tek başına SHA-256 kullanmak. Bunlar hızlı olmak için tasarlandı; modern ekran kartları saniyede milyarlarca deneme yapabilir.

Doğru yaklaşım: yavaş, tuzlu parola hash'i

Parola için özel tasarlanmış algoritmalar bilerek yavaştır ve her parolaya rastgele bir salt ekler. Böylece:

  • Aynı parolayı kullanan iki kullanıcının hash'i farklı olur.
  • Önceden hesaplanmış tablolar (rainbow table) işe yaramaz.
  • Kaba kuvvet saldırısı çok pahalı hâle gelir.

Önerilen algoritmalar: Argon2id, bcrypt, scrypt.

Kendin yazma, dilin hazır fonksiyonunu kullan

PHP:

$hash = password_hash($parola, PASSWORD_DEFAULT);
if (password_verify($girilen, $hash)) { /* giriş başarılı */ }
if (password_needs_rehash($hash, PASSWORD_DEFAULT)) { /* yeni hash'i kaydet */ }

Python (argon2-cffi):

from argon2 import PasswordHasher
ph = PasswordHasher()
h = ph.hash(parola)
ph.verify(h, girilen)   # yanlışsa istisna fırlatır

Node.js: bcrypt veya argon2 paketleri.

Salt'ı ayrıca saklamana gerek yok; bu fonksiyonlar salt'ı ve ayarları hash metninin içine yazar.

Diğer önlemler

  • Giriş denemelerini sınırla (IP ve hesap başına).
  • Hata mesajında "e-posta yanlış" / "parola yanlış" ayrımı yapma; ikisi için de aynı mesajı ver.
  • Parola sıfırlama bağlantıları tek kullanımlık ve kısa ömürlü olsun.
  • Kullanıcılara iki adımlı doğrulama seçeneği sun.
  • Asgari uzunluk iste (en az 8, tercihen 12+), karmaşık kompozisyon kurallarıyla kullanıcıyı boğma; sızdırılmış parola listelerinde olan parolaları reddetmek daha etkilidir.

Mevcut sistemi taşımak

Elinde MD5/SHA-1 hash'ler varsa: kullanıcı bir sonraki girişinde parolasını doğruladıktan sonra yeni algoritmayla yeniden hash'le ve eskisini sil. Giriş yapmayan hesaplar için zorunlu parola sıfırlaması düşün.

Sorunuz ya da eklemek istediğiniz bir nokta varsa bu başlıkta konuşabiliriz.

0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik18 saat önce
  • Cevap0
  • Görüntülenme2
  • Beğeni0
Yeni konu aç