Pregunta ¿Cómo me recuerda a mí difirir del tiempo de espera de la sesión?


Construí una aplicación en CakePHP que permite al usuario iniciar sesión y hacer algunas cosas, mantiene al usuario conectado durante aproximadamente 24 horas, creo que por defecto. Y esto es manejado por una sesión / cookie como una cookie también se crea ...

1.) Entonces, ¿qué me recordaría traer a la fiesta? Como todo lo que haría sería crear otra cookie que establezca un tiempo de espera y mantenga al usuario conectado. Pero esta funcionalidad existe en todas las aplicaciones de forma predeterminada con la sesión, ¿verdad? Pero he visto muchos sitios haciendo esto, pero no entiendo por qué, ya que la sesión lo está haciendo de la siguiente manera:

2.) Además, ¿por qué las sesiones caducan incluso si un usuario continúa utilizando un sitio web? p.ej. si lo configuro en 1 minuto pero actualizo cada 30 segundos, aún caducará ... pero mantuve el sitio activo antes de que pudiera expirar, ¿cómo podría expirar? Esto es molesto porque tengo una fecha de vencimiento para una aplicación de 1 hora, pero incluso cuando el cliente está utilizando el sitio, expira después de 1 hora, independientemente de la actividad.

Sería genial si alguien pudiera responder estas 2 preguntas.

ACTUALIZACIÓN: he creado una recompensa sobre esto con la esperanza de obtener un experto en CakePHP para ayudar a solucionar este problema. El problema es que las Sesiones expiran después del tiempo de espera INDEPENDIENTEMENTE de la interacción del usuario. Lo que quiero hacer es decir que tengo una sesión que dura 5 minutos, y el usuario provoca una devolución cada 30 segundos, luego esa sesión seguirá vigente después de los 5 minutos. Este no es el caso en este momento ...

Configure::write('Session', array(
        'start' => true,
        'defaults' => 'php',
        'timeout' => 1,
        'cookieTimeout' => 1,
        'autoRegenerate' => true
    ));

5
2018-06-20 20:10


origen


Respuestas:


  1. Lo que traería es que si el usuario cierra su navegador y lo reinicia, aún se registrará automáticamente. Este no es el caso con una cookie de sesión, ya que dicha cookie se elimina tan pronto como se cierra el navegador.

  2. Tal vez la página que visitó cada 30 segundos no inició la sesión. En ese caso, el mecanismo de sesión no se utiliza y la fecha de vencimiento de la sesión no se restablece a now + 1 minute. O tal vez la actualización solo llegue al caché del navegador, y no al servidor.


8
2018-06-20 20:16



OK, veamos si puedo tomar algo de esa recompensa (¿botín?), Mientras también pruebo mis habilidades explicativas :)

Comencemos con el # 1.

Entonces, ¿qué me recordaría traer a la fiesta?

Lo que es importante distinguir aquí es la diferencia entre una "cookie de sesión" y una "cookie de recordarme".

Dado que HTTP es un protocolo sin estado, una cookie de sesión se utiliza para vincular varias solicitudes a un solo usuario. Sin él, cada solicitud a su servidor web no está relacionada con ninguna otra solicitud. ¿Te imaginas escribir aplicaciones sin sesiones? Cada solicitud está completamente vacía, sin inicios de sesión, sin variables de sesión ... ¡Cada solicitud es un usuario desconocido! Esto básicamente significa sin aplicaciones web!

Ahora, lo importante aquí es darse cuenta de que absolutamente no quiero ¡tu sesión durará 24 horas! En mi libro, este es un gran no-no. Cuanto más breve sea la sesión, más seguro será (al menos en teoría). ¿Por qué? Porque un sesión puede ser secuestrada! Cuanto más larga sea la sesión, más posibilidades tendrá de ser secuestrado.

Por ejemplo, imagina una aplicación bancaria. Además, imagine que su usuario está accediendo desde una PC pública (nuestro usuario no es el más brillante). Entonces él está administrando su cuenta o lo que sea ... y suena su teléfono. Siendo un idiota, toma la llamada y se va, sin cerrar sesión. ¿Desea que su sesión caduque en 5 minutos, 15 minutos o 24 horas? No sé acerca de usted, pero para algo tan crítico como la banca en línea, quiero que la sesión pase lo antes posible.

Pasando a la parte de "Recuérdame".

Entonces, la cookie de sesión "conecta" varias solicitudes en una sola sesión, ¿qué hace la cookie "recordarme"? En términos simples: une múltiples. sesiones a un solo usuario.

Desea que su sitio sea fácil y agradable de usar, y el inicio de sesión casi nunca es agradable. Es solo una cosa molesta que tienes que hacer cada vez antes de hacer esa cosa que realmente quieres hacer. Una galleta de recordar me quita esa molestia.

Inicia sesión una vez, marca la casilla y ahora siempre estás conectado. en esa PC. Por eso deberías Nunca use la función "recordarme" mientras está en una PC compartida, porque la siguiente persona tendrá su identidad. Legítimamente. Esta es la razón por la que recuerden que las cookies también son un riesgo para la seguridad, ya que pueden ser secuestradas al igual que la cookie de sesión.

Finalmente, hay una diferencia crucial entre una cookie de sesión y una cookie recordarme: vencimiento. Las cookies de sesión normalmente caducan cuando cierra su navegador (o después de un tiempo que ha especificado explícitamente), mientras que las cookies de recordarme duran mucho más tiempo.

Además, ¿por qué las sesiones caducan incluso si un usuario continúa utilizando un   ¿sitio web?

Para hacerlo simple, ellos no. Debe haber cambiado la forma en que Cake (o su aplicación) maneja las sesiones. La respuesta debe estar en algún lugar en su código. La razón por la que no obtuvo una respuesta satisfactoria aquí es porque no podemos ver su código. Simplemente tendrá que depurar y hacer un seguimiento de lo que sucede con sus cookies. JB Nizet te dio algunas sugerencias.

Una cosa que sé que puede causar problemas en algunos servidores es el nivel de seguridad de Cake. Intenta bajarlo en tu /Config/core.php:

Configure::write('Security.level', 'medium'); // or 'low'

Si eso no ayuda, entonces la respuesta está definitivamente en tu código. Espero que esta respuesta te empuje en la dirección correcta!


8
2018-06-24 12:35



Comprender la combinación de la configuración de seguridad combinada con los tiempos de espera, esa es una parte muy importante. Cuando la seguridad se establece en un nivel alto, las sesiones pueden ser eliminadas antes de lo esperado.

Junto a esa prueba con la tienda interna de sesión de pastel. De esa manera la configuración del sistema local no puede influir en ello. Es posible que la configuración de PHP anule la configuración en Cake. Así que configura la tienda de sesión en Cake. Eso creará un directorio con sesiones que puedes controlar.

Del mismo modo, es una combinación de configuraciones del servidor y esperar que la configuración de Cake anule estas configuraciones del servidor.


1
2018-06-24 12:08



1.) La diferencia entre una cookie de sesión y "recordarme" es que una cookie de sesión tiene una fecha de caducidad de "0". Lo que significa "caducan cuando el navegador se cierra". Mientras que "recordarme" da una fecha de vencimiento específica, digamos un mes a partir de ahora, a esa misma cookie de sesión. Esa es la única diferencia. Puede pensar que esta diferencia de funcionalidad es trivial o sin sentido, pero considere esto: en casa no quiero molestarme en iniciar sesión cada noche en el mismo maldito Yahoo! cuenta, mientras que en el trabajo no quiero molestarme en eliminar mis cookies cada vez que tengo que ir a hacer pipí.

2.) Las cookies de sesión no deben caducar incluso cuando se utiliza la aplicación. ¿Dónde y bajo qué circunstancias estás viendo este comportamiento? Está mal.


0
2018-06-23 21:02



Si hago esto:

    Configure::write('Session', array(
        'start' => true,
        'defaults' => 'cake',
        'timeout' => 1,
        'cookieTimeout' => 1,
        'autoRegenerate' => true
    ));

/**
 * The level of CakePHP security.
 */
    Configure::write('Security.level', 'high');

¡Arregla el problema! Por lo tanto, la sesión dura 10 segundos, pero si actualizo cada 2-3 segundos, seguiré ingresando después de 10 segundos a medida que se actualice la cookie. Entonces, parece que las configuraciones de PHP de mi entorno de alojamiento están causando la expiración de la sesión / cookie ... ¿Por qué sucedería esto?


0
2018-06-24 12:35