- Katılım
- 1 Tem 2019
- Konular
- 1,893
- Mesajlar
- 5,201
- Çözüm
- 134
- Online süresi
- 1mo 8d
- Reaksiyon Skoru
- 4,001
- Altın Konu
- 140
- Başarım Puanı
- 339
- MmoLira
- 39,500
- DevLira
- 150
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!
PHP 8 ile Güvenli Oturum Yönetimi Rehberi: Dijital Kapıları Sağlam Kilitleyin
Bir kullanıcı sitenize giriş yaptığında, alışveriş sepetini doldurduğunda ya da sayfanın üst kısmında “Hoş geldin, Ayşe” yazısını gördüğünüzde arka planda sessizce çalışan bir mekanizma vardır: oturum (session) yönetimi.
Oturumlar, kullanıcının kimliğini tanımamızı ve ona özel verileri korumamızı sağlar.
Ancak her kimlik gibi, bu oturum kimliklerinin de çalınma riski vardır. İşte burada PHP 8, bize bu “kapıları” güvenle kilitleyebilmemiz için güçlü araçlar sunar.
Gelin adım adım bu güvenlik önlemlerine bakalım

1. Sağlam Başlangıç: Oturumu Güvenli Şekilde Başlatmak
Bir oturum başlattığınız anda güvenlik kurallarını koymak önemlidir.
PHP 8 ile session_start() fonksiyonuna doğrudan güvenlik ayarlarını dizi (array) olarak tanımlayabiliyoruz:
Kod:
session_start([
'cookie_secure' => true,
'cookie_httponly' => true,
'use_only_cookies' => true,
'cookie_samesite' => 'Strict',
]);
Peki bu ayarlar ne işe yarıyor?
- cookie_secure: Çerezlerin sadece HTTPS bağlantılarında gönderilmesini sağlar. Araya giren biri çerezleri okuyamaz.
- cookie_httponly: JavaScript’in oturum çerezine erişmesini engeller. XSS saldırılarına karşı kritik bir korumadır.
- use_only_cookies: Oturum kimliğinin sadece çerezlerle taşınmasına izin verir. URL üzerinden kimlik sızdırmayı önler.
- cookie_samesite: Çerezlerin yalnızca kendi sitenizden gelen isteklerle kullanılmasını sağlar. CSRF saldırılarına karşı güçlü bir kalkan görevi görür.
2. Anahtarı Yenileyin: session_regenerate_id()
Saldırganın sizi kendi oturum kimliğiyle oturum açmaya zorlamasına Session Fixation denir.
Bunu önlemenin yolu, kullanıcı giriş yaptığında veya yetkisi değiştiğinde oturum kimliğini yenilemektir:
Kod:
// Giriş işlemi başarılı olduğunda
session_regenerate_id(true);
Buradaki true parametresi, eski oturum dosyasını tamamen siler.
Böylece saldırganın elindeki eski kimlik artık işe yaramaz.
3. Oturum Süresi: Hareketsiz Kullanıcılar İçin Zaman Aşımı
Bir kullanıcı bilgisayarını açık bırakırsa, oturumun süresiz açık kalması güvenlik riski oluşturur.
Bunu engellemek için oturum ömrünü sınırlamak gerekir:
Kod:
// Oturum 30 dakika sonra sona ersin
ini_set('session.gc_maxlifetime', 1800);
Ek olarak, JavaScript ile kullanıcı 15 dakika boyunca işlem yapmazsa “otomatik çıkış” sistemini de ekleyebilirsiniz.
Bu, kullanıcı verilerini korumanın basit ama etkili yollarından biridir.
4. Veriyi Güvenle Saklayın: Oturum Depolama Alanı
PHP genellikle oturum verilerini sunucuda /tmp klasöründe metin dosyaları olarak saklar.
Ancak paylaşımlı hosting ortamlarında bu dosyalar başka kullanıcılar tarafından okunabilir!
Daha güvenli bir yaklaşım, oturumları Redis, Memcached veya veritabanında saklamaktır.
Bu yöntem hem güvenliği artırır hem de yüksek trafikli uygulamalarda performans kazandırır.
5. Çıkışı Unutmayın: session_destroy()
Kullanıcı “Çıkış Yap” butonuna bastığında yalnızca $_SESSION verilerini temizlemek yeterli değildir.
Sunucudaki kayıtlı oturumun da silinmesi gerekir:
Kod:
session_destroy();
Bu komut, oturumun sunucudaki tüm izlerini tamamen ortadan kaldırır.
6. Oturuma Ne Yazdığınıza Dikkat Edin
Oturumlar güvenli alanlar değildir; kullanıcı verilerini yazarken her zaman dikkatli olun.
Yazarken (input):
Kod:
$cleanInput = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$_SESSION['username'] = $cleanInput;
Okurken (output):
Kod:
echo htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');
Bu şekilde XSS gibi saldırılara karşı koruma sağlarsınız.
Son Söz: Güvenlik Sürekli Bir Süreçtir
Unutmayın, güvenlik bir “ayar” değil, sürekli devam eden bir süreçtir.
Bu adımları uygulasanız bile, düzenli güvenlik testleri yapmak ve PHP güncellemelerini takip etmek kritik önem taşır.
PHP 8’in sunduğu bu yeni güvenlik özelliklerini doğru kullanarak hem kullanıcı verilerini hem de projenizin itibarını koruyabilirsiniz.

Son düzenleme:










