Veritabanında Hassas Veriler Nasıl Güvenle Saklanır?
İçindekiler
Veritabanlarında şifre, kredi kartı numarası veya TC kimlik gibi kritik bilgilerin saklanma şekli, sistem güvenliğinin temel taşlarından biridir. Sizlerde verilerinizi güvenle saklamak istiyorsanız bugün sizler için güncel ve güvenli yöntemleri üç ana başlık altında inceleyeceğiz:
- Düz Metin Saklama (Güvensiz Yöntem)
- Yerel Şifreleme (Hashleme)
- Uzakta Şifreleme (Tokenization)
1. Düz Metin Saklama – Kesinlikle Kaçınılmalı
Hassas verilerin herhangi bir işlemden geçirilmeden doğrudan veritabanına kaydedilmesidir.
Örnek SQL Komutu:
INSERT INTO kullanicilar (kullanici_adi, sifre)
VALUES ('ahmet123', 'izMiR35ANKAra06');
Riskler:
- Veritabanı ele geçirildiğinde tüm şifreler açık şekilde görülür.
- SQL injection, yedekleme sızıntısı veya yetkisiz erişimle tüm hesaplar tehlikeye girer.
Bu yöntem asla kullanılmamalıdır.
2. Yerel Şifreleme – Hashleme (Standart Güvenlik Uygulaması)
Kullanıcı şifresi, tek yönlü bir hash fonksiyonu ile dönüştürülerek saklanır. Orijinal veri geri alınamaz.
Önerilen Algoritmalar
| Algoritma | Özellik | Kullanım Alanı |
|---|---|---|
| Argon2 | Bellek yoğun, brute-force’a dayanıklı | En yüksek güvenlik |
| bcrypt | Otomatik tuzlama, yaygın kullanım | Web uygulamaları |
| PBKDF2 | İterasyon destekli, eski ama güvenli | Kurumsal sistemler |
Not: SHA256 gibi hızlı hash fonksiyonları tek başına yeterli değildir. Tuz (salt) ve maliyet faktörü (cost factor) eklenmelidir.
Uygulama Örneği (Python + bcrypt)
import bcrypt
# Şifre hashleme
sifre = "AnkaRA45ANKAra123".encode('utf-8')
hashlenmiş = bcrypt.hashpw(sifre, bcrypt.gensalt())
# Veritabanına kaydedilir: $2b$12$...
# Giriş kontrolü
giris_sifresi = "AnkaRA45ANKAra123".encode('utf-8')
if bcrypt.checkpw(giris_sifresi, veritabanindaki_hash):
print("Giriş başarılı")
Şifre Değiştirme
Yeni şifre aynı algoritmayla hashlenerek güncellenir.
Avantajlar
- Orijinal şifre geri alınamaz.
- Aynı şifre farklı hash üretir (tuz sayesinde).
- Brute-force ve rainbow table saldırılarına karşı dirençlidir.

3. Uzakta Şifreleme – Tokenization (Kurumsal Çözüm)
Hassas veriler kendi sunucularınızda tutulmaz; sadece bir referans (token) saklanır.
Kullanan Şirketler
- Yemeksepeti, Trendyol: Kredi kartı bilgilerini Visa/Mastercard vault’larda tutar.
- Stripe, PayPal, Iyzipay: PCI DSS uyumlu token döner.
İş Akışı
- Kullanıcı kart bilgisini girer.
- Ödeme sağlayıcısı veriyi şifreler ve bir token üretir.
- Sadece token veritabanına kaydedilir.
- Ödeme gerektiğinde token ile işlem yapılır.
Veritabanında Saklanan Örnek
{
"kullanici_id": 123,
"kart_token": "tok_visa_1AbC2dEfGhIjKlMnOprStUv",
"son_dort": "4242",
"marka": "visa"
}
Avantajlar
- PCI DSS, GDPR, KVKK gibi yasal uyumluluklar sağlanır.
- Veri sızıntısı olsa bile bilgiler kullanılamaz.
- Sistemde tam kart numarası hiçbir zaman bulunmaz.
Karşılaştırma Tablosu
| Yöntem | Güvenlik Seviyesi | Uygulama Alanı | Tavsiye |
|---|---|---|---|
| Düz Metin | Çok Düşük | – | Kullanılmamalı |
| Hashleme (bcrypt/Argon2) | Yüksek | Şifre, API anahtarı | Zorunlu |
| Tokenization | Çok Yüksek | Kredi kartı, TC kimlik | Tercih Edilmeli |
Son Öneriler
- Düz metin saklama hiçbir koşulda kabul edilemez.
- Şifreler için bcrypt veya Argon2 kullanılmalı.
- Kredi kartı, kimlik bilgisi gibi veriler için tokenization tercih edilmeli.
- Veritabanı erişimleri en az yetki prensibi ile sınırlandırılmalı, tüm işlemler loglanmalı, yedeklemeler şifrelenmelidir.
Güvenlik, tek seferlik bir işlem değil, sürekli bir süreçtir.
Bu bilgiler, modern web ve mobil uygulamalarda veri güvenliğini artırmak için temel prensipleri yansıtmaktadır. Uygulamalarınıza entegre ederken, kullandığınız teknolojinin dokümantasyonunu da gözden geçirmeyi unutmayın.


