¿Puede alguien falsificar una variable de sesión de PHP?

2

Tengo un sitio donde un usuario puede crear una cuenta e iniciar sesión. Cuando el usuario inicia sesión, después de validar la contraseña y el nombre de usuario del usuario, les doy una variable de sesión de PHP que contiene su nombre de usuario. Así es como acceden a las funciones en mi sitio, como crear una publicación de blog y cambiar su biografía de usuario.

¿Puede alguien que quiera acceder a mi sitio a través de la cuenta de otra persona falsificar una variable de sesión que contenga el nombre de usuario del usuario? Si es así, ¿cómo pueden hacer esto? ¿Y hay alguna forma de prevenir esto?

    
pregunta DMVerfurth 27.04.2018 - 00:42
fuente

2 respuestas

3

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

El ID de sesión es lo único que se transfiere hacia atrás y hacia adelante entre el cliente y el servidor. Por lo tanto, a menos que el servidor sea pirateado o tenga un error del lado del servidor, el cliente no puede cambiar los datos de la sesión directamente. En su caso, el nombre de usuario en la variable de sesión parece ser parte del ID de la sesión o es su reemplazo (es poco claro).

Eso no significa que el sistema no tenga que asegurarse de que solo el cliente válido conozca el ID de sesión, porque eso es lo que vincula al cliente con la sesión específica. Es por eso que la función session_regenerate_id() debe usarse cada vez que se realiza un intento de inicio de sesión. Esto evita la fijación de sesión .

    
respondido por el Overmind 10.05.2018 - 10:18
fuente
2

El ID de sesión de PHP emitido después de un inicio de sesión exitoso se genera en el lado del servidor y solo contiene datos aleatorios. El sessionid se envía como una cookie y se incluye en cada solicitud posterior del cliente.

Los datos de la sesión se almacenan en el servidor, y la identificación de la sesión se utiliza para hacer referencia a estos datos para cada solicitud. El sessionid de PHP se considera seguro.

Esto no siempre ha sido el caso. En versiones anteriores de PHP, la identificación de la sesión era aleatoria, pero el generador aleatorio solo fue sembrado por la hora actual del servidor, la dirección remota y la identificación del proceso. Una vez que un atacante pudo averiguar el estado del generador aleatorio, pudo predecir los ID de sesión anteriores y futuras. Consulte enlace

Esto hizo posible que los atacantes pudieran robar sesiones para otros usuarios.

Lo que ha sucedido desde entonces, es que PHP, además de la antigua generación débil, obtiene 32 bytes de una buena fuente aleatoria, como / dev / urandom en un sistema Linux.

    
respondido por el Dog eat cat world 10.05.2018 - 11:33
fuente

Lea otras preguntas en las etiquetas