İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Güvenlik

password_hash ve Argon2id ile Şifre Saklama

password hash ve Argon2id ile Şifre Saklama hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 5 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.

Ferdi GidenFerdi Giden 2 dk okuma 12
password_hash ve Argon2id ile Şifre Saklama
İçindekiler
  1. Temel kavram ve amaç
  2. Bilmeniz gereken 5 temel nokta
  3. PHP ile uygulama
  4. Neden önemli? Kazanımlar
  5. Sonuç

password_hash ve Argon2id ile Şifre Saklama hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 5 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.

Temel kavram ve amaç

Veritabanı bir gün sızarsa kullanıcı şifrelerinin okunamaz olması gerekir. MD5 ve SHA-1 gibi hızlı özet fonksiyonları bunun için uygun değildir; modern ekran kartları saniyede milyarlarca deneme yapar. PHP'nin password_hash() fonksiyonu yavaş, tuzlanmış ve geleceğe uyumlu bir yöntem sunar.

Bilmeniz gereken 5 temel nokta

  • Kendi yöntemini yazma: md5, sha1 ve kendi tuzlama düzeninizi bırakın; password_hash yeterli ve doğru olanı yapar.
  • Argon2id: Bellek yoğun algoritma, ekran kartıyla toplu kırmayı pahalı hâle getirir.
  • Sütun uzunluğu: Özet uzunluğu algoritmaya göre değişir; şifre sütununu VARCHAR(255) yapın.
  • password_needs_rehash: Algoritma güçlendiğinde eski özetler kullanıcı giriş yaptıkça yenilenir.
  • Giriş sonrası: session_regenerate_id(true) oturum sabitleme saldırısını önler.

PHP ile uygulama

Teoriyi somutlaştırmak için kısa bir PHP örneğine bakalım:

// Kayıt
$ozet = password_hash($sifre, PASSWORD_ARGON2ID);   // ya da PASSWORD_DEFAULT

// Giriş
if (password_verify($girilen, $uye['sifre'])) {
    // Algoritma ya da maliyet güncellendiyse sessizce yeniden özetle
    if (password_needs_rehash($uye['sifre'], PASSWORD_ARGON2ID)) {
        $yeni = password_hash($girilen, PASSWORD_ARGON2ID);
        $pdo->prepare('UPDATE uyeler SET sifre = ? WHERE id = ?')->execute([$yeni, $uye['id']]);
    }
    session_regenerate_id(true);
}

Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.

PHP 8 ile gelen match ifadesi ve isimli argümanlar, uzun switch ve parametre listelerini daha okunur hâle getirir.

Neden önemli? Kazanımlar

Bu yaklaşımı benimsediğinizde elde edeceğiniz başlıca faydalar:

  • Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
  • Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
  • Hataların canlı ortama çıkmadan fark edilmesine yardım eder
  • Kullanıcı güvenini ve marka itibarını korur

Sonuç

Bu yazı boyunca password_hash ve Argon2id ile Şifre Saklama konusunun temel taşlarını ve uygulamada dikkat edilmesi gerekenleri gördük. Özellikle Kendi yöntemini yazma ve Giriş sonrası başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al