2010-04-15 9 views
7

Tengo una aplicación que utiliza la gestión de sesión de ColdFusion (en lugar de la administración de sesiones J2EE).Problema de la sesión de ColdFusion: varios usuarios detrás de una IP de proxy: cftoken y cfid parecen compartidos

Tenemos un cliente, que recientemente nos ha cambiado el tráfico de su empresa para que venga a través de un servidor proxy en su red.

Por lo tanto, a nuestro servidor ColdFusion, parece que todo el tráfico que viene de esta dirección una dirección IP, para todas las cuentas de ésta empresa ..

De las variables de sesión, Parte 1 se mantiene en una cflock, y Parte 2 se mantiene en variables de sesión editables. Es posible que no entienda bien, pero lo hemos hecho de esta manera, ya que modificamos algunos valores según sea necesario durante el uso de la aplicación.

Ahora nos encontramos con un problema de este cliente que tiene sus variables de sesión mezcladas (?). Tenemos un caso en el que establecemos una marca de tiempo ... y cuando llega el momento de buscarlo, está vacío. Por lo que parece, esto está sucediendo debido a otro usuario en la misma ficha.

Mi idea inicial es estudiar la modificación de nuestra gestión de sesiones existente para generar de alguna manera un cftoken/cfid único, o para comenzar a usar jsession_ID, si esto resuelve el problema.

He hecho algunas investigaciones básicas sobre este tema y no he encontrado nada similar, así que pensé en preguntar aquí.

Gracias!

+0

¿Está utilizando cookies para la gestión de la sesión? Cada navegador individual detrás del proxy * debe * recibir cookies de sesión únicas. Tal vez el proxy de alguna manera debe almacenar en caché/almacenar las cookies. –

+0

Estoy bastante seguro de que se están utilizando cookies. Analizaré las cookies almacenadas en caché por el proxy. La parte principal del problema es que las variables de la sesión parecen estar mezcladas y en su lugar se usan las que ya están en blanco cuando ya deberían haber sido enviadas. Estamos haciendo una sesión de depuración en este momento para capturar las variables de la sesión en cada clic para ver dónde y si falla. –

+1

He visto servidores proxy de mal comportamiento que comparten cookies. Con más frecuencia, los he visto almacenar en caché una página y devolverla a una solicitud de la misma URL, aunque los datos de las cookies son diferentes. Resultados muy similares, sin embargo. –

Respuesta

2

Me he encontrado con problemas similares de forma intermitente durante años.

Las cookies de sesión parecen ayudar (no hay datos concretos sobre eso), pero una solución que he implementado de forma reponsable es usar encabezados de caducidad sin caché y caché en cada página.

http://www.bpurcell.org/blog/index.cfm?entry=1075&mode=entry da algunas especificaciones sobre cómo implementar esto.

En casos extremos, nos hemos visto obligados a pasar el token y cfid en los enlaces/formularios, pero eso es un PITA para implementar, así que primero probaría la solución de caducidad/prevención de caché.

+0

Mi experiencia es similar. – ale

+0

los encabezados de caché no caché y caché pueden ser el camino a seguir en las páginas respectivas. –

+0

Voy a escoger esta como la respuesta correcta por el momento. –

2

Hasta donde yo sé, no hay "contras" en el uso de las variables de sesión J2EE, a menos que realmente necesite que la sesión esté activa después de que el usuario cierra el navegador. Creo que deberías probar y ver cómo se comporta la aplicación con él y ver si eso te ahorra problemas de refactorización.

para estar seguro de que está utilizando todos los demás ajustes intente esto:

<cfdump var="#APPLICATION.GetApplicationSettings()#" label="Application settings" /> 

Si ha sessionmanagement y galletas cliente se activa, todo está bien, a fin de tratar las variables de sesión J2EE.

+0

Veo ahora casi la misma respuesta :) http://stackoverflow.com/questions/1984627/disadvantages-of-j2ee-session-management-in-coldfusion/1985449#1985449 –

+0

Gracias Zarko. Lo probaré después de la opción de forzar no-caché. –

Cuestiones relacionadas