Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP 8 ile Kilitli Kapılar: Güvenli Oturum (Session) Yönetimi Rehberi

Karadayı ✓

Karadayı ✓
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Uzman
Ayın Üyesi
Katılım
21 May 2024
Konular
1,450
Mesajlar
2,451
Çözüm
7
Online süresi
3mo 25d
Reaksiyon Skoru
2,564
Altın Konu
1,027
Başarım Puanı
274
Yaş
51
MmoLira
36,853
DevLira
110
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

tmmo.png


PHP 8 ile Kilitli Kapılar: Güvenli Oturum (Session) Yönetimi Rehberi

Bir kullanıcının sitenize giriş yapmasını sağlayan, onun sepet bilgilerini tutan veya "Hoş geldin, Cevat" dememizi sağlayan şey nedir? Elbette oturum (session) yönetimi. Oturumlar, kullanıcının sitemizdeki dijital kimlik kartıdır.

Peki, bu kimlik kartını ne kadar güvende tutuyoruz? PHP 8, bu "kimlik kartlarını" çaldırmamamız için bize harika araçlar sunuyor. Gelin, sitemizin kapılarını nasıl daha sağlam kilitleyeceğimize bakalım.

1. Kural Kitabı: Oturumları Doğru Başlatmak

Daha session_start() dediğimiz anda, kuralları en baştan koymalıyız. PHP 8, bunu doğrudan session_start() içinde bir dizi (array) olarak yapmamıza izin veriyor.

İşte "süper güvenli" bir başlangıç ayarı:

[CODE title="php"]session_start([
'cookie_secure' => true,
'cookie_httponly' => true,
'use_only_cookies' => true,
'cookie_samesite' => 'Strict',
]);[/CODE]

Peki bu sihirli kelimeler ne anlama geliyor?
  • cookie_secure (true): Çerezler, sadece güvenli (HTTPS) bağlantı üzerinden gönderilir. Araya giren birinin (man-in-the-middle) çerezi okumasını engeller.
  • cookie_httponly (true): JavaScript'in (document.cookie) oturum çerezinize erişmesini engeller. Bu, XSS saldırılarının çerezinizi çalmasını neredeyse imkansız hale getiren en kritik ayarlardan biridir.
  • use_only_cookies (true): Oturum kimliğinin sadece çerezler aracılığıyla yönetilmesini zorunlu kılar. Saldırganların URL üzerinden (site.com?PHPSESSID=...) oturum kimliği göndermesini engeller.
  • cookie_samesite ('Strict'): Çerezin sadece sizin sitenizden gelen taleplerle gönderilmesini sağlar. Başka bir siteden (örn: saldirgan.com) sizin sitenize yapılan gizli taleplerde çerez gönderilmez. Bu, CSRF saldırılarına karşı güçlü bir kalkandır.

2. Kilit Değiştirme: session_regenerate_id()

Session Fixation (Oturum Sabitleme) saldırısı, bir saldırganın size kendi oturum kimliğini (session ID) "yedirmesi" ve sizin o kimlikle giriş yapmanızı beklemesidir. Siz giriş yaptığınızda, saldırgan da o kimliği bildiği için sizin hesabınıza girmiş olur.

Bunu engellemenin yolu çok basittir: Kullanıcı kimliğini doğruladığı (yani giriş yaptığı) anda veya yetkisini değiştirdiği (örn: admin paneline geçtiği) anda, ona yeni bir kilit vermelisiniz:

[CODE title="php"]// Kullanıcı adı ve şifre doğruysa...
// Giriş başarılı...
// HEMEN bunu yapın:
session_regenerate_id(true);

// 'true' parametresi, eski oturum dosyasını sunucudan siler.[/CODE]

Bu komut, eski oturum kimliğini çöpe atar ve kullanıcıya o an yepyeni, tertemiz bir kimlik verir. Saldırganın elindeki eski kimlik artık işe yaramaz.

3. Oturumu Açık Unutmayın: Zaman Aşımı (Timeout)

Kullanıcı sitenizde bir sekmeyi açık unutup bilgisayar başından kalkarsa ne olur? O oturumun sonsuza kadar açık kalması bir risktir.

Varsayılan oturum ömrünü (genellikle 24 dakikadır) 30 dakikaya (1800 saniye) ayarlayabilirsiniz:

[CODE title="php"]// 30 dakika
ini_set('session.gc_maxlifetime', 1800);[/CODE]

Ekstra İpucu: Buna ek olarak, JavaScript kullanarak bir "hareketsizlik zamanlayıcısı" kurabilirsiniz. Kullanıcı 15 dakika boyunca fareyi oynatmazsa, otomatik olarak "Çıkış Yap" işlemi tetiklenebilir.

4. Kasayı Değiştirin: Güvenli Oturum Depolama

Çoğu PHP kurulumu, oturum verilerini sunucuda /tmp gibi genel bir klasörde, basit metin dosyaları olarak saklar. Eğer paylaşımlı bir hosting kullanıyorsanız veya sunucunuzda başka bir sitenin açığı varsa, bu dosyalar okunabilir!

Daha güvenli ve performanslı bir yöntem, oturum verilerini Redis (süper hızlı bellek deposu) veya Veritabanı (MySQL, PostgreSQL) içinde saklamaktır.

5. Kapıyı Kapatıp Çıkın: session_destroy()

Kullanıcı "Çıkış Yap" butonuna bastığında, sadece $_SESSION dizisini boşaltmak veya çerezi silmek yetmez. Sunucudaki kaydı tamamen yok etmeniz gerekir.

[CODE title="php"]// Kullanıcı "Çıkış Yap" dediğinde:
session_destroy();[/CODE]

Bu, sunucudaki oturum dosyasını (veya veritabanı kaydını) tamamen imha eder.

6. Oturuma Ne Koyduğunuza Dikkat Edin

Oturumlar da bir veritabanı gibidir: Asla körü körüne güvenmeyin.
  • Oturuma Yazarken (Input): Kullanıcıdan gelen bir veriyi ($_POST) oturuma yazacaksanız, mutlaka temizleyin.
    [CODE title="php"]// Gelen veriyi temizle
    $cleanInput = filter_input(INPUT_POST, 'input_field', FILTER_SANITIZE_STRING);
    // Temiz veriyi oturuma yaz
    $_SESSION['user_input'] = $cleanInput;[/CODE]
  • Oturumdan Okurken (Output): Oturumdaki bir veriyi ekrana (echo) basacaksanız, XSS saldırılarına karşı mutlaka htmlentities kullanın.
    [CODE title="php"]// Ekrana basarken filtrele
    echo htmlentities($_SESSION['user_input'], ENT_QUOTES, 'UTF-8');[/CODE]
Unutmayın, güvenlik bir ürün değil, bir süreçtir. Bu adımları uygulasanız bile düzenli olarak güvenlik denetimleri yapmak, uygulamanızı güvende tutmanın tek yoludur.
 
Kasayı Değiştirin bunun yerine daha teknik bir kelime ekleyelim

Peki bu sihirli kelimeler ne anlama geliyor? daha terimsel birşey koyalım ayarlar yada yapılandırma gibi


eski oturum kimliğini çöpe atar fantastik kelime olmuş biraz siler diyebiliriz aslında
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst