SevkiBilge

PHP'de session yönetiminde karşılaştığım güvenlik açığına çözüm önerisi

BusraKurtX
· 3 gün önce · 0 görüntülenme
Arkadaşlar merhaba, uzun süredir PHP ile proje geliştiriyorum ve geçen hafta bir müşteri projesinde session yönetimiyle ilgili can sıkıcı bir güvenlik açığıyla karşılaştım. Normalde session ID’leri kullanıcı giriş yaptıktan sonra yeniliyorum ve HTTPS kullanıyorum ama yine de bir zafiyet oluştu. Olay şu: Kullanıcı logout yaptığında session’ı sonlandırıp session ID’yi geçersiz kılıyorum fakat tarayıcıda session cookie’si silinmiyor. Bir süre sonra aynı cookie ile tekrar istek gönderildiğinde, session dosyası sunucuda silinmiş olsa bile PHP otomatik olarak yeni bir session oluşturup aynı ID’yi atıyor. Bu da session fixation saldırısına kapı aralıyor. İlk başta session_destroy() ile işi bitirdiğimi sanıyordum ama cookie’yi manuel olarak temizlemediğim için sorun devam ediyor.

Bu sorunu çözmek için session_regenerate_id(true) kullanarak hem ID’yi yeniliyorum hem de eski session’ı siliyorum. Ama yine de tarayıcıdaki cookie’nin süresini geçmişe ayarlayıp silmek gerektiğini fark ettim. Şu anda logout işleminde setcookie(session_name(), '', time() - 3600, '/') ekleyerek hem sunucudaki session’ı hem de cookie’yi temizliyorum. Ancak bu çözüm her ortamda aynı şekilde çalışıyor mu? Özellikle farklı tarayıcılarda veya mobil cihazlarda cookie silme davranışı değişiyor mu? Deneyimli arkadaşlardan bu konuda tavsiye almak isterim.

Bir de session sabitleme (fixation) saldırılarına karşı başka ne tür önlemler alıyorsunuz? Örneğin, kullanıcının IP veya User-Agent bilgisini session’a ekleyip doğrulama yapmak mantıklı mı? Yoksa bu gereksiz bir karmaşıklık mı yaratır? Özellikle mobil kullanıcıların IP’si sık değiştiği için sorun çıkarabilir diye düşünüyorum. Sizin bu konuda uyguladığınız pratik çözümler neler? Konuyu tartışmaya açmak istedim, herkesin fikri benim için değerli.
0 yanıt

Henüz yanıt bulunmuyor. İlk yanıtlayan siz olun!

Yanıt yazmak için giriş yapın.