Iniciado sesión como un usuario diferente en tiempo real

Esto sigue ocurriendo aleatoriamente a todos los usuarios. No me ha pasado a mí, pero una vez me desconecté cuando le sucedió a otra persona. No tengo idea de por dónde empezar a buscar.

Tengo un hilo en mi foro que hice público para proporcionar más información. Esta vez, 2 usuarios iniciaron sesión como el mismo usuario, uno era un administrador y el otro no. El usuario en el que se convirtieron ni siquiera está activo.

@Falco Cualquier información sobre dónde buscar es apreciada.

@Falco este es un problema recurrente desde hace varios años. Hasta donde sé, es un problema del lado del cliente con la sesión de usuario y específicamente con el ID de usuario. Este problema solo se soluciona provisionalmente, no se arregla, si en lugar del inicio de sesión local (autenticación local) se utiliza la autenticación de terceros.

¿Puedes confirmar que esto se debe a tu deficiente autenticación local?

Con todo respeto, hay miles de instalaciones de Discourse en Internet. Solo en nuestro hosting ejecutamos miles, y también hay muchas autoalojadas, y tu instancia es la única que informa de este problema. Esto significa que tu problema es muy probablemente autoinfligido.

Dado que estás ejecutando un proxy inverso personalizado delante de Discourse, empezaría por eliminarlo y pasar a nuestra configuración de instalación estándar recomendada antes de informar del error aquí.

:face_with_raised_eyebrow:

3 Me gusta

No estoy seguro de qué hace que mi configuración sea personalizada vs lo que está integrado en Discourse, ya que ambos usan nginx. Sin embargo, no es posible que lo elimine, ya que Discourse no es la única cosa que estoy alojando. Estoy seguro de que es mi problema, pero si es posible que me ocurra a mí, también es posible que le pase a cualquiera. No tengo otros problemas con ningún software que esté alojando. No te estoy pidiendo que me guíes paso a paso, pero no puedo encontrar nada malo por otra parte.

Si no hay otra idea que puedas darme sobre dónde mirar, quizás puedas conocer a alguien que pueda. He intentado revisar los logs en ambos contenedores así como en sus respectivos hosts. No estoy seguro de dónde más buscar qué salió mal.

2 Me gusta

¿Crees que el tamaño del hilo podría estar causando esto? ¿Algún tipo de efecto secundario de un desbordamiento/exceso?

Llegamos a decenas de miles de respuestas en múltiples hilos, en diversas categorías.

Puedo entender la falta de apoyo. No somos clientes que pagan y algunos de nosotros ni siquiera somos muy amables. No te culpo por señalarme a mí, ya que estoy de acuerdo, es algo que estoy haciendo de manera diferente y que causa este dolor de cabeza. Sin embargo, si realmente crees que el proxy inverso es lo que está causando este problema, ¿no sería esto un gran problema de seguridad?

No sé qué no sé sobre el funcionamiento interno de discourse, pero para mí esto parece algo que debería ser de interés para los desarrolladores.

Ejecutamos foros donde los temas superan las 70.000 respuestas y esto no ha causado este problema, como Forum Jeux vidéo - Gamekult o https://forums.woot.com/latest?ascending=false&order=posts

Sí, es definitivamente un problema de seguridad. Pero si solo ocurre en esta instancia específica, es un problema de seguridad en tu sitio, y no en Discourse, ¿verdad?

Estaría feliz de ayudar aquí. ¿Estarías dispuesto a mover el sitio a un servidor separado durante un par de semanas usando nuestra instalación estándar para descartar cualquier problema de proxy inverso?

1 me gusta

Si mi proxy inverso es capaz de manipular algún token o lo que sea de la manera correcta para que Discourse crea que un usuario se ha convertido en otra persona… ¿realmente importa si el problema radica en el proxy inverso? ¿No indicaría esto algo explotable en otro lugar?

De nuevo, sin saber lo que no sé sobre cómo funciona la autenticación.

Nos alejamos del alojamiento de terceros debido al aumento de los costos, pero puede haber otra forma de abordar eso. Investigaré el proxy inverso. Actualmente uso este contenedor por facilidad de administración, sin embargo, podría intentar algo diferente.

Sé que dices que solo me pasa a mí y no tengo pruebas de lo contrario, pero ¿realmente significa que no es posible para nadie más?

Investigaré la configuración de nginx que viene con Discourse para ver si puedo entender dónde estoy haciendo algo mal. Agradezco tu opinión.

1 me gusta

¿Tienes alguna configuración de caché en el proxy bajo el dominio de Discourse?

1 me gusta

Sí que utilizo la opción de caché proporcionada. Esta es la configuración que viene con el contenedor anterior.

También utilizo la opción ‘bloquear exploits comunes’.

1 me gusta

No reclamo que entendería algo aquí y ahora, pero cuando empecé a usar Discourse tenía Varnish delante de Discourse, y experimenté muchas cosas raras, como contenido incorrecto.

Discourse hace su propio almacenamiento en caché y prácticamente cualquier tipo de almacenamiento en caché por un proxy inverso es una muy mala idea que consume mucho tiempo. Pero claro, mis habilidades muy limitadas son muy diferentes de lo que pueden hacer los “Big Guys™”.

3 Me gusta

buena información. Puedo desactivar las ‘funciones adicionales’ aquí.

1 me gusta

Así que básicamente harás lo que Falco ya ha sugerido un par de veces :smirking_face:

1 me gusta

Quería que eliminara por completo el proxy inverso. Esto es simplemente eliminar algunas cosas de la configuración del proxy. No sabía que Discourse estaba haciendo un almacenamiento en caché interno que entraría en conflicto con el almacenamiento en caché externo, así que esa es una sugerencia útil.

El enlace que sigue enviando es lo que ya estamos haciendo:

estos pasos funcionarán en cualquier proveedor de nube compatible con Docker o servidor local.

Está ejecutando el contenedor estándar. La documentación menciona el uso de una máquina “compatible con Docker”, que es lo que está utilizando. La documentación incluso menciona el uso de un servidor local, que es lo que está utilizando.

No hay mención de usar un proxy especial aprobado o de deshabilitar el caché.

También hay documentación para configurar SSO, que parece haber causado problemas similares a los que estamos experimentando en el pasado:

Aún no se menciona la configuración del caché o las soluciones de proxy inverso “personalizadas”.

Como mínimo, sugeriría actualizar la documentación para resaltar estos posibles problemas, ya que son muy obvios para los expertos de Discourse.

1 me gusta

Me preocuparía mucho esa configuración de caché. No entiendo completamente la documentación de nginx sobre proxy_ignore_headers, pero por defecto nginx no almacena en caché las respuestas que incluyen una cabecera Set-Cookie. Parece que esa configuración está cambiando ese comportamiento para que las respuestas que incluyen una cabecera Set-Cookie podrían ser almacenadas en caché. Si se almacenan en caché con la cabecera Set-Cookie y luego se sirven a un usuario diferente, eso podría hacer que alguien cambie de cuenta de usuario.

En teoría, esa configuración solo debería aplicarse a archivos multimedia, pero hacer coincidir la parte final de una URL (¿incluyendo parámetros de consulta?) parece una forma bastante insegura de hacerlo.

2 Me gusta

He dejado de usarlo. Dado que otros han señalado que parece una idea bastante mala en general, lo agradezco. No vi nada malo de inmediato en lo que hacía, pero ciertamente no soy un experto en la materia.

Ese bloque de ubicación de caché puede tener cierta superposición con las rutas que entregan cookies, intentemos desactivarlo.

1 me gusta

Sospecho que esto es correcto basándome en la explicación que dio @simonk.

Agradezco la ayuda de todos.

Intentaré actualizar esto en un rato para dar un sí o no. Debería ser una advertencia útil para otros si es así.