Teknoloji ipuçlarını kendin uygula
İçerik
Son yazılar
Biz kimiz
Yazılım Atölyesi, adım adım teknoloji rehberleriyle kendi başına öğrenip uygulama yapmak isteyenlere yardımcı olur. Pratik ipuçları, araç önerileri ve çözümler bulacaksınız.

Güvenli Şifre Saklama Yöntemleri

# Güvenli Şifre Saklama Yöntemleri

Bir kullanıcı kaydı formu yazdın. Şifreyi veritabanına yazacaksın. Burada verdiğin karar, veritabanı sızdığı gün tek savunma hattın olacak. Düz metin şifre saklamak artık kabul edilebilir bir hata değil; ama "MD5'ledim, tamam" demek de aynı derecede riskli.

Amaç şu: veritabanı komple kopyalansa bile saldırgan şifreleri kullanamasın. Bunu sağlayan üç şey var: doğru algoritma, her kullanıcıya özel salt, ve yeterince yavaş bir hesaplama. Aşağıda bunları tek tek, uygulanabilir şekilde ele alıyoruz.

Hashing Temelleri ve Doğru Algoritma Seçimi

Şifreyi saklamıyorsun. Şifrenin parmak izini saklıyorsun. Kullanıcı giriş yaptığında yeni parmak izini alıp eskisiyle karşılaştırıyorsun. Bu yüzden geri döndürülemez olması özellik, eksiklik değil.

Hash ile Şifreleme Arasındaki Fark

Bu ikisi karıştırıldığında çok kötü kodlar çıkıyor. Kısa ayrım:

Şifreyi encryption ile saklarsan, anahtar da sızdığında bütün şifreler düz metin olur. Password hashing encryption ayrımını en basit haliyle şöyle hatırla: şifreyi hiçbir zaman geri okumana gerek yok, sadece doğrulaman lazım.

Hangi Algoritma?

Modern kullanımda üç isim öne çıkıyor:

AlgoritmaDurumNot
bcryptGüvenli, yaygınHer dilde olgun kütüphanesi var. 72 byte girdi sınırı unutulmamalı.
Argon2idGüvenli, modernBellek maliyeti de ayarlanabilir. Yeni projede ilk tercih.
scryptGüvenliBellek yoğun. Argon2'ye alternatif.
MD5 / SHA-1 / SHA-256Şifre için kullanmaÇok hızlı. Saniyede milyarlarca deneme yapılabilir.

SHA-256 kötü bir hash değil; dosya bütünlüğü için mükemmel. Sorun hız. Şifre saklamada yavaşlık istiyorsun.

Salt ve Pepper

Salt, her kullanıcı için üretilen rastgele bir değer. Şifreye eklenip hash'lenir. Faydası:

  1. Aynı şifreyi kullanan iki kullanıcı farklı hash'e sahip olur.
  2. Hazır rainbow table'lar işe yaramaz.
  3. Saldırgan her hash'i tek tek kırmak zorunda kalır.

İyi haber: bcrypt ve Argon2 salt'ı kendisi üretir ve çıktı stringinin içine gömer. Ayrı bir salt kolonu açmana gerek yok. Kendi salt'ını elle üretmeye kalkışmak genelde hata kaynağı.

Pepper ise uygulama genelinde tek olan, veritabanında durmayan gizli bir ek değer. Ortam değişkeninde veya secret manager'da tutulur. Veritabanı tek başına sızarsa ekstra bir katman sağlar. Zorunlu değil, ama ucuz bir kazanç.

Uygulamada Doğru Kurulum

Teori tamam. Şimdi kodda ve süreçte nelere dikkat edeceğine bakalım.

Maliyet Parametresini Ayarlamak

bcrypt'te "cost" ya da "rounds" denen bir değer var. Her artışta hesaplama süresi iki katına çıkar. Nasıl seçeceksin:

Argon2 kullanıyorsan zaman maliyeti, bellek maliyeti ve paralellik olarak üç parametre var. Belleği cömert tut; asıl korumayı o sağlıyor.

Kod Tarafında Klasik Hatalar

Aşağıdakiler sık görülen ve gerçekten zarar veren hatalar:

Migrasyon ve Bakım

Elinde MD5 dolu eski bir tablo varsa şifreleri yeniden hash'lemek için düz metne ihtiyacın var — yok. Çözüm kademeli geçiş:

  1. Kullanıcı tablosuna algoritma sürümünü tutan bir kolon ekle.
  2. Kullanıcı doğru şifreyle giriş yaptığı anda elinde düz metin var. O anda bcrypt/Argon2 ile yeniden hash'le ve kaydı güncelle.
  3. Bir süre sonra hâlâ eski formatta kalanları zorunlu şifre sıfırlamaya yönlendir.
  4. Maliyet parametresini yükselttiğinde de aynı yöntem işe yarar: girişte "rehash gerekli mi" kontrolü yap.

Ek olarak login denemelerine hız sınırı koy.

© 2026 Yazılım Atölyesi