Çerez hırsızlığını engelleme güvenli session ile oturum kontrolleri
class SecureSessionManager {
public function __construct() {
$this->startSecureSession();
}
private function startSecureSession() {
// Secure ve HttpOnly çerez ayarları
ini_set('session.cookie_secure', 1);
ini_set('session.cookie_httponly', 1);
// Oturum kimliğini her oturum başlatıldığında değiştirme
session_regenerate_id(true);
// Oturum başlat
session_start();
// Oturum kimliğini her oturum başlatıldığında değiştirme
session_regenerate_id();
}
public function regenerateSessionId() {
// Oturum kimliğini güncelle
session_regenerate_id(true);
}
public function validateIpAddress() {
// Kullanıcının IP adresini kontrol et
if (!isset($_SESSION['client_ip']) || $_SESSION['client_ip'] != $_SERVER['REMOTE_ADDR']) {
// IP adresi değişmiş, oturumu sonlandır veya güncelleme yap
$this->regenerateSessionId();
$_SESSION['client_ip'] = $_SERVER['REMOTE_ADDR'];
}
}
public function setSessionData($key, $value) {
// Oturum verilerini şifreleme (gerekirse)
// Bu örnekte şifreleme işlemi yapılmamıştır, daha güvenli bir uygulama için şifreleme eklemelisiniz.
$_SESSION[$key] = $value;
}
public function getSessionData($key) {
return isset($_SESSION[$key]) ? $_SESSION[$key] : null;
}
public function endSession() {
// Oturumu sonlandır
session_destroy();
}
}
// Kullanım örneği:
$sessionManager = new SecureSessionManager();
$sessionManager->validateIpAddress();
$sessionManager->setSessionData('user_id', 123);
// Oturum verilerini almak için:
$userID = $sessionManager->getSessionData('user_id');
// Oturumu sonlandırmak için:
// $sessionManager->endSession();