Session hijacking: attacker anaiba session ID ya authenticated user na anapata access isiyo halali.

Goal: Protect user sessions kwa kutumia:

Secure cookies

Regenerating session IDs

Session timeout

HTTPS enforcement

⚙️ 2. PHP Secure Session Setup
<?php
// Start secure session
session_start([
'cookie_lifetime' => 0, // session expires on browser close
'cookie_secure' => true, // cookie sent only over HTTPS
'cookie_httponly' => true, // prevent JS access to cookie
'cookie_samesite' => 'Strict' // prevent CSRF via cookie
]);

// Regenerate session ID on login
function secure_login($user_id){
session_regenerate_id(true); // prevents session fixation
$_SESSION['user_id'] = $user_id;
$_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['last_activity'] = time();
}

// Check session validity
function is_session_valid(){
if(!isset($_SESSION['user_id'])) return false;
if($_SESSION['ip_address'] !== $_SERVER['REMOTE_ADDR']) return false;
if($_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT']) return false;
if(time() - $_SESSION['last_activity'] > 1800){ // 30 min timeout
session_unset();
session_destroy();
return false;
}
$_SESSION['last_activity'] = time(); // update activity
return true;
}
?>

🧩 3. Login Example with Secure Session
<?php
// Assume user authentication passed
$user_id = 1; // fetched from DB after password_verify
secure_login($user_id);
echo "✅ User logged in securely!";
?>

🧩 4. Checking Session on Protected Pages
<?php
session_start();
if(!is_session_valid()){
header("Location: login.php");
exit();
}

// Protected content
echo "Welcome, user ".$_SESSION['user_id'];
?>


💡 Maelezo:

session_regenerate_id(true) prevents session fixation.

IP and User-Agent check inablock hijacked sessions.

Timeout ensures session expires after inactivity.

🔑 5. Additional Best Practices

Use HTTPS – always encrypt session cookies.

Set secure, httponly, samesite cookies – prevent JS & CSRF attacks.

Limit session lifetime – force re-login after timeout.

Regenerate session ID – on login or privilege changes.

Destroy session on logout – clean server-side session data.

✅ 6. Hitimisho

Secure session management is critical for protecting user authentication.

Combine secure cookies, session regeneration, IP & user-agent checks, timeout, na HTTPS.

Protects against session hijacking, fixation, and unauthorized access.

🔗 Tembelea:

👉 https://www.faulink.com/

Kwa mafunzo zaidi ya PHP, session security, na best practices za web application security.