What are the potential security risks associated with storing user data in cookies or sessions in PHP?

Storing user data in cookies or sessions in PHP can pose security risks such as session hijacking, session fixation, and cross-site scripting attacks. To mitigate these risks, it is important to properly secure the data stored in cookies or sessions by encrypting sensitive information, validating user input, and setting appropriate session configurations.

// Fix: Encrypt sensitive data before storing it in sessions

// Start session
session_start();

// Encrypt sensitive data before storing in session
$_SESSION['username'] = encryptData($username);

// Function to encrypt data
function encryptData($data) {
    $key = 'secret_key'; // Change this to a secure key
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($iv . $encrypted);
}