Hola por favor si alguien me puede ayudar , estoy en la capa de seguridad
y lo unico que me falta es destruir la sesion cuando cierre el explorado
¿Como puedo hacerlo ?
| |||
Cerrar sesion cuando cierre el explorador Hola por favor si alguien me puede ayudar , estoy en la capa de seguridad y lo unico que me falta es destruir la sesion cuando cierre el explorado ¿Como puedo hacerlo ? |
| ||||
Cita: Hola,
Iniciado por kho Hola por favor si alguien me puede ayudar , estoy en la capa de seguridad y lo unico que me falta es destruir la sesion cuando cierre el explorado ¿Como puedo hacerlo ? puedes explicarte un poco mejor, no entendí bien qué es lo que te ocurre
__________________ http://www.nosoynadie.net/ |
| ||||
la sesion no se destruye cuando cierras la ventana? yo creo que si.. pero en cualquier caso podrías tener un boton "cerrar" que al pulsarlo llamase a la misma pagina y meterle un codigo tal que asi: <? if (isset(submit) { session_destroy(); echo "<script>window.close();</script>"; //o exit(); } ?> bueno.. algo por el estilo..
__________________ ALOZORRO v5.0 (ahora en .es) |
| |||
Muy buenas: He leido tu pregunta KHO y es cierto, la sesion queda abierta despues de cerrar la página o salir del navegador, durante un cierto tiempo pasado el cual se destruye, la solución de azrael666 es buena y yo la tengo implementada, pero los usuarios son dados a cerrar con el boton X del navegador, con lo cual no vale para nada, puedes hacer que cada vez que se entre en tu página, veas si existe una sesion y en caso afirmativo cerrarla. Saludos |
| ||||
Cita: ah.. pues no habia pensado yo en esa opción... está bien tenerla en cuenta puedes hacer que cada vez que se entre en tu página, veas si existe una sesion y en caso afirmativo cerrarla.
__________________ ALOZORRO v5.0 (ahora en .es) |
| ||||
mm. acabo de comentarlo con un compañero... por cada usuario hay sesiones diferentes.. incluso si tienes una ventana abierta y abres otra las sesiones serán diferentes.... si cierras una ventana al abrir una nueva te crea otra sesion diferente (con un SID de 40 caracteres o por ahi.. lo cual es bastante dificil que sea la misma sesion de antes..).. con lo que al cerrar la ventana creo que ya no haría falta hacer nada mas.. en cualquier caso yo creo que mi opcion del boton (aunque no la usen por vagancia o lo que sea) sería valida... creo....
__________________ ALOZORRO v5.0 (ahora en .es) |
| |||
Buenas de nuevo: La seguridad siempre es importante y de hecho yo tengo puestas las dos, incluso probe con unonload de javascrip de forma que al cerrar la ventana hiciera un sesion destroy() pero la mayoria de las veces no funcionaba. Esto viene al caso de lo siquiente: Tienes una página www.mia.com/acceso.php, esta te pediría usuario y password, pasando despues a la página restringida.php, si el usuario y el password son correctos. Si sales con la X del navegador y vuelves a entrar directamente en restringida.php sin pasar por el acceso te permite hacerlo ya que la sesion sigue abierta, pregunte si había alguna forma de detectar cuando se cierra la ventana pero parece que no es posible. He visto por ahí que lo que hacen es restringir el tiempo que esta activa una sesion pero tambien da problemas, sobre todo al usuario que tiene que autentificarse cada vez que se le acaba. Saludos |
| |||
¿Como propagas el SID en tu uso de sesiones (configuración php.ini) y aplicación (código).? Si propagas el SID en cookies (session.use_cookies = on y session.use_cookies = on además de session.use_trans_sid a OFF) definiendo la vida de esa cookie que propagará el SID en session.cookie_lifetime a 0, se crea una cookie de "sesión" (valga la rebundancia, de tiempo de vida 0 segundos) la cual se "mata" al cerrar la última ventana de tu sitio y con ella se muere el SID que la enlaza con la sesión creada en el servidor, lo cual no implica que la sesión se muera también o elimine .. eso ya depende en última instancia de la directiva: session.gc_maxtimelife (normalmente y por defecto se define a unos 24 minutos = 1440 segundos). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Cita: Esto depende directamente de como propagues el SID. Si propagas el SID en el URL .... hasta por el historial del navegador si la sesión sigue en curso (session.gc_maxtimelife sigue activa) podrías entrar denuevo a tu sesión abierta .. lo mismo que si le pasas a alguien ese link con el SID en ella propagado.Si sales con la X del navegador y vuelves a entrar directamente en restringida.php sin pasar por el acceso te permite hacerlo ya que la sesion sigue abierta, pregunte si había alguna forma de detectar cuando se cierra la ventana pero parece que no es posible. Este tema de seguridad lo trata este documento recomendado por PHP.net directamente: http://www.acros.si/papers/session_fixation.pdf Otro detalle a tener encuenta aunque se propaga el SID en cookies y se defina un tiempo de vida de esa cookie como "de sesión" (cero, 0 segundos en session.cookie_lifetime = 0), ... no es válido que se "cierre" una sóla ventana del sitio para que la cookie se "muera" .. hay que cerrar toda ventana del sitio activo .. sino la cookie sigue "viva" y retomará la sesión por su SID válido. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Cita: Bueno .. creo que el problema de la habilitación de cookies o no depende del usuario. Se que todo el mundo no está al mismo nivel .. que no todos leen al respecto .. otros se ven "Alarmados" por gente que anda como la "inquisición" definiendo a la cookie como el "enemigo público n°1" cuando esto pasa por un tema de -saber- quien me pide crear una cookie en mi equipo y así autorizarla o no según de donde provenga.
Iniciado por Stickmaster2004 bueno, he escuchado mucho de que las cookies al lado del cliente son un problema por que en general bueno este no puede tener habilitada las cookies, tambien se considera que si se utiliza php hay que configurar el php.ini, pero......., no hay una forma eficaz y sencilla de decirle en php, bueno que a los 5 minutos bueno le cierra la sesion y a cualquier accion en la pagina lo lleve a la pagina donde aparece el nombre de usuario y contraseña???. eso es todo. NO es problema de seguridad como hace PHP en propagar en ella el SID (no los datos que están en el servidor .. sólo se propaga la "referencia" que hace en el servidor a esos datos). De hecho en el documento (PDF) que menciono en mi anterior mensaje se exponen los problemas de propagar el SID en el URL (para no depender de que el cliente acepte cookies o no ). Cita: Es ahí donde se define principalmente como quieres propagar el SID .. tu decides escuchando los "pros" y los "contras" de uno u otro método. Alguna de esta configuración se puede hacer también en tiempo de ejecución via: ini_set() función.tambien se considera que si se utiliza php hay que configurar el php.ini, Cita: Esto PHP no lo hace por tí con una simple función o configuración. PHP gestiona las sesiones en forma general, no individual: tiempos de expiración .. etc. Es tu aplicación la que "definirá" como ha de tratar una "sesión" .. en algunos casos te interesará cerrar cualquier sesión creada a cierto tiempo . .en otros no, tambien te interesará "matar" una sesión tal vez "selectivamente" o definir un tiempo de vida de cada sesión en forma individual .. bueno, la mayoría de estas cosas PHP y sus sistema de sesiones clásico no lo implementa, pero si que tienes soluciones que sustituyen en parte a lo que PHP no hace o poco implementa al respecto como por ejemplo:no hay una forma eficaz y sencilla de decirle en php, bueno que a los 5 minutos bueno le cierra la sesion y a cualquier accion en la pagina lo lleve a la pagina donde aparece el nombre de usuario y contraseña???. ADOdb http://phplens.com/lens/adodb/docs-session.htm (no es el único .. pero si tal vez el más completo al respecto). Una vez que soluciones el tema de la "caducidad" de tu variable de sesión .. el tema de "redireccionar" si expiró lo haces con un simple: Código PHP: Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Vamos con la seguridad Hola cluster: De todo lo que has comentado estoy en linea, solo hay una que me es imposible cambiar y es session.use_trans_sid a OFF ya que aunque empiece el script con ini_set("session.use_trans_sid","0"); no me hace caso ya que en php_ini solo puedo cambiar aquellas que corresponden al usuario, como ini_set("session.use_only_cookies","1"); Saludos Me leere el documento que dices auque este en ingles y me cueste bastante Muchas gracias por todo, por cierto te vote excelente al autentificador. |
| |||
Ejemplo curioso hola de nuevo: Acabo de escribir una respuesta y al dar al boton de enviar me ha dicho que la sesion ha expirado, he introducido los datos y me inicia sesion y ademas incluye mi respuesta, hasta aquí todo normal. Se me ha ocurrido dar al boton de atrás y curiosamnete ha vuelto a iniciar la sesion sin pedir datos y ha vuelto a incluir la respuesta, ¿puede ser que esto ocurra por caducar la sesión prontamente o no tiene nada que ver lo que digo? Saludos |
| |||
Cita: Revisa la documentación de ini_Set() www.php.net/ini_set (en ingles de preferencia pues está más completa normalmente), ahí tienes las directivas del php.ini y como puedes alterar su valor inicial (por script, por php.ini sólo o por .htaccess o equivalente).
Iniciado por jomoli Hola cluster: De todo lo que has comentado estoy en linea, solo hay una que me es imposible cambiar y es session.use_trans_sid a OFF ya que aunque empiece el script con ini_set("session.use_trans_sid","0"); no me hace caso ya que en php_ini solo puedo cambiar aquellas que corresponden al usuario, como ini_set("session.use_only_cookies","1"); Saludos Me leere el documento que dices auque este en ingles y me cueste bastante Muchas gracias por todo, por cierto te vote excelente al autentificador. Algunas directivas sólo se pueden modificar vía .htaccess o algún php.ini o equivalente que tu proveedor te asigne para tu sito concreto en ese servidor (tendrás que conversarlo con tu servicio de hosting). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Cita: No entendí bien el procedimiento que seguistes .. pero en principio si ya te autentificastes, la cookie donde estos foros propaga el SID ya se creó .. en consecuencia en cuanto a sesiones ya estabas autentificado. Otros problemas sobre el "re-envio" de datos (de un formulario) ya es cosa del navegador y el método usado (así se comportan cuando se usa método POST, aunque este foro usa mucho "Ajax" .. ahí no sé como se comporta este tema en concreto).
Iniciado por jomoli hola de nuevo: Acabo de escribir una respuesta y al dar al boton de enviar me ha dicho que la sesion ha expirado, he introducido los datos y me inicia sesion y ademas incluye mi respuesta, hasta aquí todo normal. Se me ha ocurrido dar al boton de atrás y curiosamnete ha vuelto a iniciar la sesion sin pedir datos y ha vuelto a incluir la respuesta, ¿puede ser que esto ocurra por caducar la sesión prontamente o no tiene nada que ver lo que digo? Saludos Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |