Tengo un problema y no estoy seguro de cómo resolverlo.
He estado construyendo un sistema de inicio de sesión seguro en un servidor HTTPS (con una calificación de "A" por SSL-labs, si vale la pena), y funciona bien, sin embargo, hoy se niega a iniciar sesión, con algo de depuración he encontrado algo muy extraño (en mi opinión).
Tengo algunos problemas serios con el manejo de la sesión en el sitio web, las diferentes páginas usan los mismos datos de sesión (por supuesto) y la misma sesión / configuración de cookies, y pasan la información entre ellas correctamente, PERO el comportamiento de mi navegador parece ser como si hubiera dos navegadores visitando los mismos sitios web, utilizando los mismos datos de sesión.
Síntomas: debido a que he tenido incoherencias con el contenido de la sesión generada en la página (token de hash único) que no se ajusta a los mismos datos guardados en el formulario de inicio de sesión (como un valor de $_POST
), encontré que como solo hay una línea En todo el sitio que establece el valor de la sesión, esta línea debe ejecutarse dos veces. Así que puse un valor de contador en la sesión, como session['counter']
. Mi problema es específicamente con esto:
Página de inicio de sesión:
Opens page,
session hash-string is generated and saved to the post form.
session counter = counter + 1;
Form is filled in.
Página de inicio de sesión:
fails to verify the posted hash-string is the same as the session hash
string, despite there being no other cause for the session values to
change (well there must be, but I can't see it!)
Pero, luego, volviendo a la Página de inicio de sesión , veo que el contador = el último valor + 2! Además, el valor del contador registrado en el archivo de sesión guardado en el servidor siempre es +1 al valor mostrado en la página de inicio de sesión.
Algunas imágenes:
TengaencuentaqueestoestáporencimadelasalidaHTMLyeselúltimolugarenelcódigodondeseeditanlosdatosdelaSESIÓN.
Salida:
Tengaencuentaelnúmerorelacionadoconelcontadorenlaimagen1.
Miarchivodesesión,estearchivoserelacionaconestasesiónespecíficadelnavegadorysolocon1archivodesesión,yaquesoyelúniconavegadordelsitio.
La cadena CheckDrop es el valor hash para comparar, pero el contador está en 12 en lugar de 11, que se muestra en la imagen 2 de arriba.
-
Mi sitio está autenticado mediante HTTPS, aunque este trabajo se encuentra en un subdominio.
-
Este tipo de problema nunca ha ocurrido antes para mí.
-
Este problema ha estado ocurriendo durante las últimas 3 horas, pero inconsistentemente , funcionó por arte de magia unos 40 minutos antes (justo antes de publicar esta publicación). pero no había hecho nada que pudiera ver como cambiar el entorno.
-
Anteriormente he comparado los datos de phpinfo y todo parece correcto en el punto de salida del navegador. Parece que no se debe a mi configuración.
-
Sucede en diferentes navegadores en mi PC.
Me gustaría preguntar, obviamente, ¿alguna idea de por qué ocurre esto? Pero más específicamente a este StackExchange, ¿Cómo puedo confirmar o verificar que no sea una forma de MITM u otra interferencia no deseada? Temo que se trata de alguien o algo en medio de la ruta del servidor a la PC, pero me gustaría saber cómo puedo verificar si es así y cualquier otra ayuda para confirmar que la conexión es segura.
Nota: Anteriormente publiqué una pregunta sobre un tema similar en StackOverflow, pero esta pregunta aquí es más específicamente acerca de la anomalía del contador de sesión. y sobre si es indicativo de interferencia.