PHP almacena datos de sesión para cada usuario en una carpeta temporal en el servidor. Esta carpeta se define en el archivo de configuración php.ini bajo la variable session.save_path. Localizar este valor desde el interior de su archivo php.ini, o alternativamente, crear un archivo PHP con:
<?php echo "Session Save Path: " . ini_get('session.save_path');?>
como su contenido, y abrir el archivo en su navegador.
Una vez que encuentre la ruta de guardado para los datos de la sesión, abra esa carpeta y verá una estructura bastante simple. Todas las sesiones se almacenan en el formato: sess_ $ SESSIONID.
Los datos de sesión se serializan antes de almacenarse en el disco. Como tal, los objetos almacenados en el archivo de la sesión tendrían que ser deserializados antes de ser utilizables. Sin embargo, si está utilizando texto sin formato, que está almacenado tal cual, para almacenar sus datos de sesión (por ejemplo, $_SESSION['userid'] = 1234
) para almacenar información sobre sus usuarios, debería ser fácil analizar los datos que está buscando. dentro de los archivos.
Una cosa más ... No he investigado, pero parece que la ID de sesión que aparece en el nombre de archivo corresponde directamente, por ejemplo, al nombre de la cookie PHPSESSID almacenada en la computadora del usuario. Entonces, con esto en mente, es posible recorrer los archivos dentro del directorio de sesión temporal, adquirir todos los valores de $ SESSIONID, establecer la ID de sesión actual usando session_id($SESSIONID)
, iniciar una sesión con session_start()
y acceder a los datos que necesita a través de PHP sin tener que analizar los archivos de contenido por sí mismos. ¿Alguien puede confirmar si esto sería posible o no?
Editar: Publicación ajustada para que coincida con el comentario de Itay.
Vale la pena mencionar que este tipo de pirateo es una idea terrible. PHP tiene una arquitectura de 'no compartir nada' y tratar de hackearlo sería como usar un destornillador para plantar las uñas. En lugar de analizar los archivos internos del servidor, cree uno propio o mejor utilice la base de datos para conservar lo que necesite. – smentek
php tiene la opción de guardar los datos de la sesión en la memoria. no siempre podemos sacarlos de los archivos. – jondinham
y más, esos archivos "ses_ *" pueden colocarse bajo una estructura de directorios de varios niveles. esto es lo que dice en php.net – jondinham