Bir düşünün… Kullanıcılar sitenizde gezinirken, oturumları açık kalıyor. Ancak bir noktada bilgisayarları başında değiller veya başka bir işlemle meşguller. Eğer bu oturumlar sonsuza kadar açık kalsa, kötü niyetli kişiler bu oturumlardan faydalanabilirler. Burada devreye giren PHP session timeout, hem kullanıcı deneyimini hem de güvenliğini sağlar.
PHP ile Session Timeout Nasıl Yönetilir?
# 1. Session Timeout Değerini Ayarlamak
Öncelikle, oturum süresinin sona erme zamanını ayarlamak için, PHP'nin session.gc_maxlifetime ayarını kullanabiliriz. Bu ayar, bir oturumun ne kadar süreyle aktif kalacağını belirler. Aşağıdaki örnekte, oturum süresini 15 dakika olarak ayarlıyoruz:
900) {
// Oturum süresi dolmuş, kullanıcıyı çıkış yapmaya zorluyoruz
session_unset();
session_destroy();
header("Location: logout.php");
exit();
}
// Son erişim zamanını güncelliyoruz
$_SESSION['last_activity'] = time();
?>
Bu kod parçası, kullanıcıların son erişim zamanını kontrol eder ve eğer belirlediğiniz süreyi aşarlarsa, oturumlarını sonlandırır. Bu sayede, kötü niyetli kişilerin erişim sağlama şansı kalmaz.
# 2. Kullanıcıya Oturum Zaman Aşımını Bildirme
Bazen kullanıcılar uzun süre herhangi bir işlem yapmazlar ve oturumlarının sona erdiğini fark etmezler. İşte burada, kullanıcıya oturum zaman aşımını bildirmek oldukça önemlidir. Kullanıcıya belirli bir süre sonra oturumunun sona ereceğini bildiren bir uyarı mesajı gösterebilirsiniz. Örneğin, JavaScript kullanarak oturum süre dolduğunda bir uyarı penceresi açabilirsiniz.
PHP Oturum Güvenliği İçin Diğer İpuçları
- Secure Session Cookie: Oturum çerezi sadece HTTPS bağlantılarında iletilmesini sağlayarak güvenliğinizi artırabilirsiniz.
true, // Sadece HTTPS üzerinden iletilmesini sağlarız
'httponly' => true, // Çereze JavaScript ile erişim engellenir
'samesite' => 'Strict' // Çerezin sadece aynı site içerisinde kullanılmasını sağlar
]);
?>
- Session ID Yenileme: Kullanıcı oturum açtıktan sonra, session ID'sini yenileyerek güvenliğini artırabilirsiniz. Bu, session fixation saldırılarına karşı bir önlemdir.
### Sonuç Olarak…
PHP ile session timeout yönetimi, sadece oturum süresiyle ilgili bir mesele değildir. Kullanıcı güvenliği, deneyimi ve genel sistemin verimliliği açısından kritik bir rol oynar. Session timeout ayarlarını doğru yaparak, hem güvenliği artırabilir hem de kullanıcılarınıza kesintisiz bir deneyim sunabilirsiniz. Unutmayın, oturum yönetimi doğru yapılmadığında, güvenlik açıkları ve kullanıcı kaybı gibi sorunlarla karşılaşabilirsiniz.