Session Timeout Nedir?
Session timeout, bir kullanıcının bir web sitesinde belirli bir süre işlem yapmadan kalması durumunda oturumunun otomatik olarak sonlandırılması işlemidir. Bu işlem, kullanıcının oturumunun güvenliğini sağlamak ve sistemin kötüye kullanımını engellemek amacıyla uygulanır. Özellikle e-ticaret sitelerinde, bankacılık platformlarında veya kişisel bilgiler barındıran her türlü web uygulamasında session timeout kullanımı çok önemlidir.
Bir kullanıcı oturum açtığında, PHP bu oturum bilgilerini sunucu tarafında bir oturum (session) olarak saklar. Ancak, kullanıcının bir süre işlem yapmaması durumunda bu oturum aktif kalmaya devam ederse, kötü niyetli kişiler bu durumu avantaja çevirebilir. İşte bu yüzden session timeout uygulanmalıdır.
PHP'de Session Timeout Uygulama
PHP'de oturum zaman aşımını ayarlamak oldukça basittir. İşte basit bir kod parçası ile nasıl oturum zaman aşımı yapabileceğinizi göstereceğim.
$timeout_duration) {
// Oturum süresi dolmuşsa, oturumu sonlandır
session_unset();
session_destroy();
echo "Oturum süresi doldu. Lütfen tekrar giriş yapın.";
}
// Son işlem zamanını güncelle
$_SESSION['LAST_ACTIVITY'] = time();
?>
Bu kod parçasında neler olduğunu daha yakından inceleyelim. Öncelikle `session_start()` ile PHP oturumu başlatıyoruz. Daha sonra, `$timeout_duration` değişkeni ile oturum süresini belirliyoruz. Bu örnekte, 30 dakika (1800 saniye) olarak ayarladık. Ardından, kullanıcının son işlem yaptığı zamanı `$_SESSION['LAST_ACTIVITY']` ile kontrol ediyoruz. Eğer 30 dakika boyunca işlem yapılmadıysa, oturum sonlandırılır ve kullanıcıya "Oturum süresi doldu" mesajı verilir.
Session Timeout ile Güvenliği Artırmak
Oturum zaman aşımı, web uygulamanızın güvenliğini artırmanın sadece bir yoludur. Güvenlik açısından önemli birkaç öneri daha eklemek faydalı olacaktır.
SSL Kullanımı: Web sitenizin HTTPS üzerinden çalışmasını sağlamak, oturum bilgilerinin şifrelenmesini ve güvenli bir şekilde iletilmesini sağlar.
Oturum Yenileme: Oturum süresi dolmadan önce, kullanıcı işlemi devam ettiriyorsa, oturum süresini yenileyebilirsiniz. Bu sayede aktif kullanıcılar kesintisiz bir şekilde devam edebilir.
Session Hijacking’den Korunma: Oturum hırsızlığı (session hijacking), kötü niyetli kullanıcıların başka bir kullanıcının oturumunu ele geçirmesidir. Bunun önüne geçmek için oturum kimlik doğrulama ve IP kontrolü gibi ek güvenlik önlemleri alabilirsiniz.
PHP ile Session Timeout Konfigürasyonu
PHP, session timeout ayarlarını `php.ini` dosyasından da yapılandırmanıza olanak tanır. Bunun için aşağıdaki ayarları kullanabilirsiniz.
session.gc_maxlifetime = 1800 // Oturumun maksimum süresi 30 dakika
session.cookie_lifetime = 0 // Çerezlerin süresi, oturum süresi ile aynı olmalı
Bu ayarları `php.ini` dosyanızda yaparak, PHP’nin oturum süresini ve çerezlerin süresini yönetebilirsiniz. `gc_maxlifetime` oturumun sonlanmadan önceki süreyi belirlerken, `cookie_lifetime` çerezlerin ömrünü ayarlamak için kullanılır.
Sonuç
Web uygulamanızın güvenliğini artırmak ve kullanıcı verilerini korumak, kullanıcı deneyimi kadar önemlidir. PHP ile session timeout uygulayarak, oturumları etkili bir şekilde yönetebilir ve kullanıcılarınızı güvende tutabilirsiniz. Oturum zaman aşımı yalnızca kötüye kullanımın önüne geçmekle kalmaz, aynı zamanda uygulamanızın daha profesyonel bir şekilde çalışmasını sağlar.
Unutmayın, güvenlik sürekli bir çaba gerektirir. Bu yazıda verdiğimiz basit PHP kodlarıyla başlayabilirsiniz, ancak her zaman daha gelişmiş güvenlik önlemleri uygulamak önemlidir.