2011-02-25 22 views
27

esto está cruzando mi mente y me pregunto si es posible, ¿qué tan seguro puede ser almacenar información en la variable $ _SESSION de PHP?

Respuesta

38

El almacenamiento de variables en la variable $ _SESSION tiene dos posibilidades para "inseguridad".

  • La primera como se describe en la otra respuesta se llama "fijación de sesión". La idea aquí es que dado que el ID de la sesión se almacena en una cookie, la ID puede cambiarse a la de otro usuario. Esto no es un problema si un usuario obtiene una ID nueva en cada sesión por lo que es muy difícil encontrar una ID de una sesión que esté funcionando actualmente y secuestrarla.
  • El segundo depende completamente de su código. Si su código pierde los valores de la información secreta que almacena en $ _SESSION, entonces es inseguro. Si su código le permite al usuario controlar los valores de esa información, es inseguro. De lo contrario, si hay algo en la variable $ _SESSION y su código nunca permite que el usuario lo vea o escriba, entonces es seguro.
+0

+1 Porque esta [es la única respuesta hasta el momento que] aborda las vulnerabilidades permitidas por la codificación insegura. –

+0

¿Qué quiere decir con "Si su código pierde los valores" –

+4

fuga sería algo así como 'Hola, $ _SESSION ['nombre de usuario'], su contraseña es $ _SESSION ['contraseña']'. Los datos de la sesión se guardan en el servidor, y a menos que el código expulse explícitamente una parte de él, el usuario remoto nunca podrá verlos. –

2

El $_SESSION se almacena por completo en el servidor, por lo que el usuario no puede modificarlo. Sin embargo, es posible para los exploits de secuestro de sesión donde el usuario se conecta a la sesión de otro usuario.

1

Los datos de sesión se almacenan en el servidor.

0

Donde menos seguro $_COOKIES están en la computadora del cliente, el $_SESSION se almacena en el servidor. Su ubicación está determinada por el session.save_path de php.ini. Sin embargo, todavía hay problemas de seguridad como session fixation

10

PHP Session funciona almacenando una cookie PHPSESSID en la computadora del usuario final que actúa como una clave de acceso para la información de sesión basada en el servidor. Ese valor de cookie es una cadena hash (cuya seguridad depende de la configuración de PHP) que se utiliza para vincular el navegador en particular con los valores de sesión específicos que establezca.

Esa cadena se parece a b420803490a9f0fe8d6a80657fec3160. Entonces, el usuario final podría alterar esa cadena, pero luego su sesión se volverá inválida, ya que casi seguro no coincidirá con una almacenada por PHP, y no tendrán acceso a los datos.

Existe el riesgo, como han mencionado otros, de que alguien PHPSESSID quede expuesto, y la gente lo use para secuestrar la sesión de otra persona.

Cuestiones relacionadas