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

Oturum Sabitleme Saldırısı ve session_regenerate_id

Bu yazı, Oturum Sabitleme Saldırısı ve session regenerate id konusunu temelden ele alıyor. Önce kavramın ne işe yaradığını, ardından 5 kritik noktayı ve bunları bir araya getiren PHP örneğini adım adım inceleyeceğiz.

Ferdi GidenFerdi Giden 2 dk okuma 3
Oturum Sabitleme Saldırısı ve session_regenerate_id
İçindekiler
  1. Temel kavram ve amaç
  2. Öne çıkan noktalar
  3. Uygulamalı örnek
  4. Neden önemli? Kazanımlar
  5. Sonuç

Bu yazı, Oturum Sabitleme Saldırısı ve session_regenerate_id konusunu temelden ele alıyor. Önce kavramın ne işe yaradığını, ardından 5 kritik noktayı ve bunları bir araya getiren PHP örneğini adım adım inceleyeceğiz.

Temel kavram ve amaç

Oturum sabitleme (session fixation) saldırısında saldırgan, kurbanın kendi bildiği bir oturum kimliğiyle giriş yapmasını sağlar; kurban giriş yaptığında saldırgan aynı kimlikle hesaba erişir. Çözüm basittir: kullanıcının yetki düzeyi her değiştiğinde oturum kimliği yenilenmelidir.

Öne çıkan noktalar

  • Girişte yenileyin: Başarılı girişten hemen sonra session_regenerate_id(true) çağırın; true parametresi eski oturum verisini siler.
  • Yetki değişiminde de: Yönetici moduna geçiş ya da şifre değişikliği gibi her yetki değişiminde kimliği yenileyin.
  • Strict mode: session.use_strict_mode, sunucunun üretmediği oturum kimliklerini reddeder; sabitleme saldırısının temelini kırar.
  • Yalnız çerez: Oturum kimliğinin adres satırında taşınmasına izin vermeyin; bağlantı paylaşıldığında kimlik de sızar.
  • Tam çıkış: Çıkışta oturum dizisini boşaltın, oturum çerezini silin ve session_destroy() çağırın.

Uygulamalı örnek

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

ini_set('session.use_strict_mode', '1');    // sunucunun üretmediği kimlikleri kabul etme
ini_set('session.use_only_cookies', '1');   // kimliği adres satırından alma
session_start();

function girisYap(array $uye): void
{
    session_regenerate_id(true);             // yeni kimlik; eski oturum verisi silinir
    $_SESSION['uye_id'] = (int)$uye['id'];
    $_SESSION['giris_zamani'] = time();
}

function cikisYap(): void
{
    $_SESSION = [];
    $p = session_get_cookie_params();
    setcookie(session_name(), '', time() - 3600, $p['path'], $p['domain'], $p['secure'], $p['httponly']);
    session_destroy();
}

Kodu doğrudan kopyalamak yerine her satırın ne yaptığını anlayarak uyarlamanız, ileride çıkacak hataları çözmeyi kolaylaştırır.

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 Oturum Sabitleme Saldırısı ve session_regenerate_id konusunun temel taşlarını ve uygulamada dikkat edilmesi gerekenleri gördük. Özellikle Girişte yenileyin ve Tam çıkış 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