How can session_id() be encrypted to prevent session hijacking in PHP?

Session hijacking can be prevented in PHP by encrypting the session_id() before storing it in a cookie. This encrypted session_id can then be decrypted when needed to retrieve the session data. By encrypting the session_id, it becomes much harder for attackers to hijack sessions and gain unauthorized access to user data.

// Encrypt the session_id before storing it in a cookie
function encrypt_session_id($session_id) {
    $key = 'your_secret_key_here';
    return base64_encode(openssl_encrypt($session_id, 'AES-256-CBC', $key, 0, substr($key, 0, 16)));
}

// Decrypt the encrypted session_id when needed
function decrypt_session_id($encrypted_session_id) {
    $key = 'your_secret_key_here';
    return openssl_decrypt(base64_decode($encrypted_session_id), 'AES-256-CBC', $key, 0, substr($key, 0, 16));
}

// Usage example
$session_id = session_id();
$encrypted_session_id = encrypt_session_id($session_id);

// Store the encrypted session_id in a cookie
setcookie('encrypted_session_id', $encrypted_session_id, time() + 3600, '/');

// Retrieve the encrypted session_id from the cookie and decrypt it
$encrypted_session_id = $_COOKIE['encrypted_session_id'];
$decrypted_session_id = decrypt_session_id($encrypted_session_id);

// Use the decrypted session_id to retrieve session data
session_id($decrypted_session_id);
session_start();