Esto depende del servidor web utilizado. Si tomamos PHP en Unix como ejemplo, puede almacenar la sesión en el sistema de archivos en la carpeta / tmp. Aquí se crea un archivo con el nombre de la ID de sesión de los usuarios prefijado con sess_ (Ejemplo: /tmp/sess_9gk8f055hd61qll6a8pjpje2n2). El contenido de la sesión se puede cifrar opcionalmente antes de colocarlo en el navegador. Para las sesiones de Apache (no necesariamente PHP) puede usar el módulo mod_session_crypto ( Lea más aquí ).
El propietario de la sesión no puede cambiar las variables de la sesión como le parece, a menos que la aplicación le permita hacerlo. La lógica de la aplicación debe proporcionar medios para cambiar la sesión para que el usuario pueda cambiar las variables.
El objeto de la sesión nunca se transmite al cliente y solo se pasa una referencia a la sesión (por ejemplo, PHPSESSID) al cliente. El ID de sesión debe tener una alta entropía y un mínimo de 16 bytes de longitud para que sea muy difícil de adivinar. Consulte Top 10 de OWASP: autenticación rota y administración de sesión para obtener más información al respecto. También vea esta hoja de referencia de OWASP para obtener información específica sobre cómo asegurar las sesiones.
Ataques contra el almacenamiento de sesión:
Si existe un error como, por ejemplo, LFI (Inclusión de archivos locales), es posible que un atacante lea sus propios objetos de sesión y los de otros usuarios al incluir el archivo en el sistema de archivos. Por ejemplo, si el siguiente ejemplo funcionó, posiblemente podría leer mis propios datos de sesión:
http://<victim>/?page=../../../../../../../../tmp/sess_<my sessionid>