ID de sesión en el código fuente de la página html

2

Quiero saber si es peligroso de alguna manera almacenar el ID de sesión de usuario registrado actual en el código fuente generado de la página.

¿Por qué quería hacer eso?

Estoy intentando compartir la sesión del usuario entre dos aplicaciones, una (la principal) en PHP y la otra en Node.js. Node.js one se usa solo para datos en tiempo real, pero solo quiero enviar datos en vivo a los usuarios registrados en la aplicación PHP.

Como los identificadores de sesión se almacenan en una instancia de Redis accesible tanto para PHP como para Nodo, solo puedo enviar el identificador de sesión desde el cliente a Node.js (usando mensajes de websockets).

¿Por qué no utilizar las cookies que ya están presentes en el navegador del usuario?

La aplicación Node se sirve utilizando un host diferente. Así que la cookie no estará disponible.

    
pregunta JCM 29.01.2014 - 23:08
fuente

4 respuestas

3

SÍ existe un riesgo al incluir el identificador de sesión en el código HTML, ya que facilitará la explotación de las vulnerabilidades de XSS para secuestrar sesiones.

Primero, acceder a la ID de sesión desde JavaScript es MALAS PRÁCTICAS , las cookies deben tener el indicador HTTPONLY para evitar eso.

En su caso, incluso si se establece el indicador HTTPONLY, tener el identificador de sesión en el cuerpo de la página facilita el acceso a este identificador mientras explota el XSS y, por lo tanto, omite el HTTPONLY.

    
respondido por el 3asm_ 30.01.2014 - 01:13
fuente
1

Siempre que su código esté libre de errores y no sea susceptible a la fijación de sesión o XSS y se acceda a través de HTTPS con cookies seguras, es probable que esté bien, pero es una tarea muy difícil de lograr y mantener. Cuando se rompa será realmente difícil detectar / probar / solucionar cualquier problema. La solución que propones es muy frágil.

La mejor solución para compartir una sesión en diferentes pilas de aplicaciones es proporcionarles acceso a través del mismo vhost, de esa manera no hay problemas con la mensajería para manejar el problema de las cookies. Hay productos muy buenos y estables disponibles para hacer esto. - muchos de los cuales son gratuitos (Varnish, Nginx, Apache Traffic server).

Alternativamente, debería ser posible reproducir una arquitectura de tipo SSO para compartir la sesión a través de diferentes vhosts.

    
respondido por el symcbean 30.01.2014 - 11:22
fuente
0

¿Está utilizando HTTPS para las respuestas de ambos hosts? Si es así, no hay peligro particular. Si no, simplemente ha ampliado el potencial de secuestro de sesión que ya existía para sus hosts de PHP y Node de forma independiente (debido a las cookies de sesión) en todas las solicitudes de sus hosts de PHP y Node.

Mientras use SSL, estará relativamente seguro aquí. Si no está utilizando SSL y hay datos confidenciales en juego, no lo está.

    
respondido por el Xander 29.01.2014 - 23:16
fuente
0

Probablemente deberías intentar una solicitud ajax desde tu código php para actualizar tu cliente con los datos en vivo que se envían a tu servidor común. Esto mantiene todas las preocupaciones por separado y no crea innecesariamente un requisito de que su código php esté vinculado a una fuente.

    
respondido por el tjborromeo 01.02.2014 - 03:59
fuente

Lea otras preguntas en las etiquetas