¿Es malo si la clave de sesión se pasa en texto sin formato en la URL?

2

En una clase, se nos dijo que es peligroso poner la clave de sesión en la URL porque podría ser almacenada en caché, ya sea por el navegador o por un proxy, etc. ¿Es esto correcto? Incluso si se almacenó en caché, ¿no debería regenerarse la clave de sesión en cada sesión? Supongo que puede ser un problema con los sitios que no cierran la sesión después de cerrar el navegador. ¿Entiendo el problema correctamente?

¿También cuál es la diferencia entre una clave de sesión y un valor de sesión? Utilizo la clave de sesión para referirme a la cadena almacenada en una computadora local que se asocia con la sesión que el servidor conoce para un usuario registrado.

    
pregunta Celeritas 03.04.2016 - 06:31
fuente

2 respuestas

1
  

¿También cuál es la diferencia entre una clave de sesión y un valor de sesión?

Hay básicamente dos formas de mantener la información sobre una sesión:

  • Coloque la información en la base de datos y asóciela con alguna clave no presumible (es decir, aleatoria). Utilice esta clave dentro de alguna cookie o similar cuando se comunique con el cliente. Busque la información basada en esta clave siempre que los necesite. En este caso, tiene una clave de sesión (cookie) y un valor de sesión (información en la base de datos).
  • Codifique toda la información en alguna cadena y proteja este token de sesión contra manipulación y adivinación. En este caso, no tiene ningún valor en la base de datos, pero puede extraer toda la información del token.
  

... es peligroso poner la clave de la sesión en la URL porque podría ser almacenada en caché, ya sea por el navegador o por un proxy, etc. ¿Es correcto?

Dado que la clave de sesión se utiliza a menudo para identificar a un usuario que ha iniciado sesión, debe tratarse como una contraseña temporal, es decir, debe tratarse como secreta. Esto significa que debe estar protegido con HTTPS contra el olfateo. Esto significa también que no se debe registrar porque alguien podría obtener acceso a los archivos de registro incluso sin piratería que generalmente contiene la URL completa. Y no se debe reenviar a un tercero, es decir, ni automáticamente con el encabezado del Referente HTTP ni por el usuario manualmente al compartir la URL actual.

    
respondido por el Steffen Ullrich 03.04.2016 - 09:45
fuente
0

Respuesta para la pregunta 2:

Primero aclaremos la terminología.

ID de sesión a menudo se utilizan para identificar a un usuario que ha iniciado sesión en un sitio web, pueden ser utilizados por un atacante para secuestrar la sesión y obtener privilegios potenciales. Un ID de sesión es a menudo una cadena larga, generada aleatoriamente para disminuir la probabilidad de obtener una válida por medio de una búsqueda de fuerza bruta.

ID de sesión de ejemplo en GET: SESSIONID=AIsdlasdklMVgyfrfksoskeikskZPF63erf

Sesión [clave, valor] : el servidor suele identificar al usuario mediante el ID de sesión enviado a través de una cookie o mediante los parámetros GET / POST. Por ejemplo, tomemos un caso donde los datos de sesión en el servidor se almacenan en archivos como sess_AIsdlasdklMVgyfrfksoskeikskZPF63erf.session . Este archivo contiene datos almacenados en pares [clave, valor] para ese id de sesión.

Y en el lado del servidor, la validación de la página de bienvenida puede ser como la de abajo

session_id( '$_GET['SESSIONID'] );  //Sets session id to the value received via GET parameter i..e session_id('AIsdlasdklMVgyfrfksoskeikskZPF63erf')
$username=$_SESSION['username'] //sets $username to Alice
echo "Welcome".$username;   //Prints "Welcome Alice"

Aquí username es una clave y Alice es el valor correspondiente para esa clave en la variable de sesión.

Respuesta para la pregunta 1:

Sí, es peligroso si el ID de sesión está en la URL. Además, es similar tener su nombre de usuario o contraseña en la URL a través de GET.

A pesar de que la sesión solo es válida por un corto período de tiempo (desde el inicio de sesión hasta el cierre de sesión / caducidad de la sesión), se puede usar incorrectamente si el atacante puede obtener el sessionid mientras sea válido.

Una vez que obtiene el ID de sesión, puede enviar las solicitudes falsificadas en nombre de los usuarios.

En el ejemplo anterior, si el atacante obtiene el ID de sesión de Alicia y envía las solicitudes con él, también recibirá el mensaje "Welcome Alice" .

    
respondido por el Sravan 03.04.2016 - 10:34
fuente

Lea otras preguntas en las etiquetas