Foros del Web » Programando para Internet » PHP »

cerrar sesión en php, cual es la forma correcta?

Estas en el tema de cerrar sesión en php, cual es la forma correcta? en el foro de PHP en Foros del Web. veran.. para iniciar @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < a href = "index.php?content=sesioniniciar.php" > iniciar sesion < / a > para cerrar sesion tengo ...
  #1 (permalink)  
Antiguo 22/03/2013, 00:26
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
cerrar sesión en php, cual es la forma correcta?

veran..

para iniciar
Código HTML:
Ver original
  1. <a href="index.php?content=sesioniniciar.php">iniciar sesion</a>

para cerrar sesion tengo esto..
Código HTML:
Ver original
  1. <a href="index.php?content=sesionclose.php">cerrar sesion</a>



eso esta en un link del menu desplegable.
es la manera que se me ha ocurrido.
pero he estado pensando..
si un usuario envia ese link a otro y el otro usuario dara click al link y cerrara su sesion.
entonces como evito eso?
o mejor dicho. de que manera implementan ustedes los cierres de sesion?

el inicio no creo que sea problema pues simplemente ocupa password y user.
pero la cerrada?

se me ocurre que enviandole el id de la sesion, si el id de la sesion es igual al parametro entoncs que se cierre.

algo asi

Código HTML:
Ver original
  1. <a href="index.php?content=sesionclose.php$idsesion=<? echo $_SESSION['session_id'];?>">cerrar sesion</a>
entonces si un usuario copia lo que hay en el link entonces no podra hacer nada... por que esta enviando su id. que es diferente al otro-

pero ustedes como lo implementan?
de antemano gracias.
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #2 (permalink)  
Antiguo 22/03/2013, 00:35
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: cerrar sesión en php, cual es la forma correcta?

No te preocupes por una cuestión así, si envían el link a otro usuario, este no podrá cerrar la sesión. De todas maneras, muestrame el código de sesionclose.php

Saludos
  #3 (permalink)  
Antiguo 22/03/2013, 00:58
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por cachusan Ver Mensaje
No te preocupes por una cuestión así, si envían el link a otro usuario, este no podrá cerrar la sesión. De todas maneras, muestrame el código de sesionclose.php

Saludos

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.    if(!isset($_SESSION['usuario']))
  5.    {
  6.         echo "No hay ninguna sesion iniciada";
  7. //esto ocurre cuando la sesion caduca.
  8.        
  9.    }
  10.    else
  11.    {
  12.      session_destroy();
  13.        //echo "Has cerrado la sesion";
  14. echo "<meta content='0;URL=index.php?content=Formularioresgistro.php' http-equiv='REFRESH'> </meta>";
  15.        
  16.    }
  17.  
  18.  
  19.    
  20. ?>

por eso se me ocurre que poniendole la sessionid... comparando..
pero quisiera saber cual es su metodo..
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #4 (permalink)  
Antiguo 22/03/2013, 01:07
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: cerrar sesión en php, cual es la forma correcta?

Esta bien el código.
Pensando en tu preocupación, quizás entendí mal al principio, por tal motivo 2 escenarios:

- Si tu preocupación es que el que recibe el link cierre sesión del que la envio, no es posible de esa manera. Por lo cual no hay que verificar nada.

- Si tu preocupación es que deliberadamente se envíe el link para provocar el cierre de sesión del usuario que recibe, esta bien como lo planteas. Aunque no expondría el id de sesión, generaría un valor aleatorio por ejemplo con uniqid() y validarlo contra eso como lo planteabas en tu solución.

Saludos y disculpas si entendí mal en un principio.
  #5 (permalink)  
Antiguo 22/03/2013, 02:49
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: cerrar sesión en php, cual es la forma correcta?

Hay una funcion de php que se llama session_destroy(); busca tutoriales de como poder aplicar esta funcion. saludos
  #6 (permalink)  
Antiguo 22/03/2013, 03:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: cerrar sesión en php, cual es la forma correcta?

La ID de sesión se propaga por medio de cookies, a menos que tengas tu PHP configurado para enviarlo por URL (nada recomendable), lo ideal es que no incluyas ese dato en el enlace.

Si un usuario ingresa a sessionclose.php, al usar session_destroy(); o $_SESSION = array(); no puede afectar a otros usuarios, sólo la propia sesión.

Y creo que no debería preocuparte mucho si un usuario puede cerrar la sesión de otro, más bien, fíjate que no pueda "robarla", ahí si hay motivo de preocupación.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 22/03/2013, 10:01
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por Triby Ver Mensaje
La ID de sesión se propaga por medio de cookies, a menos que tengas tu PHP configurado para enviarlo por URL (nada recomendable), lo ideal es que no incluyas ese dato en el enlace.

Si un usuario ingresa a sessionclose.php, al usar session_destroy(); o $_SESSION = array(); no puede afectar a otros usuarios, sólo la propia sesión.

Y creo que no debería preocuparte mucho si un usuario puede cerrar la sesión de otro, más bien, fíjate que no pueda "robarla", ahí si hay motivo de preocupación.
ah si jejes
bueno pero si alguien quiere jugar, solo le envia el enlace a alguien y le dice que haga click y ya se le cierra la sesion.

si no lo incluyo en el enlace como deberia hacerlo?
es que no se me ha ocurrido como.

mira por ejemplo esta pagina

http://soycompatible.com/inicio.aspx
cuando estas registrado la pagina de inicio es esa..

pero que pasa si le quitas inicio.aspx

http://soycompatible.com

es como si no tuvieras sesión iniciada.
pero si vuelves a poner el enlace completo
http://soycompatible.com/inicio.aspx
entonces entras como si nada, ya no te pide autentificacion.
pero eso esta bien??
esta bien que con solo quitar el inicio te aparezca la opción de autentificacion?

de hecho acabo de ver ahorita en este momento, que ellos hacen lo mismo que yo.
oO
tambien incluyen el archivo de cerrarsesion

pero facebook no lo hace asi, lo hace asi
Facebook, lo envia por post.
creen que es mejor por post?
si verdad?
asi ya no se puede enviar el enlace de salir.

o que opinan?

tambien estaba viendo lo demas.
tengo lo de agregar amigos, borrar amigos etc....
y para borrar se presiona un enlace que ejecuta la consulta.
entonces si alguien quiere que borres a un amigo te envia el enlace :S
mmm¿ creo que entonces debo cambiar todo eso verdad?

miren
Código HTML:
Ver original
  1. <a href="eliminaramigos.php?idamigo=280">Eliminar de mis amigos</a>

si Perla ve el enlace y sabe que el id 280 es la exnovia de su novio entonces Perla como sabe informática le enviara el id 280 a su novio para que este la borre sin darse cuenta..

creanme que no me habia dado mucho cuenta de todo este agujero de seguridad
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 22/03/2013 a las 10:11
  #8 (permalink)  
Antiguo 22/03/2013, 10:28
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: cerrar sesión en php, cual es la forma correcta?

Lo que planteas esta bien, el tema es que lo recomendable no es pasar el id de sesion por la query. Podes usar cualquier otro dato, llamalo hash, identificador único, como te parezca.

La idea sería esta:

Al momento de generar la sesion cuando autenticas generas una nueva variable llamada pepito, $_SESSION['pepito] = uniqid();

La función uniqid() genera un valor aleatorio. Este es el valor que vas a pasar en cada query, el cual debe ser requerido para ejecutar una determinada acción.

Como ese dato "pepito" lo tenes un tu sesion, lo podes comparar con el valor que viene en la query:

Código PHP:
Ver original
  1. if($_SESSION['pepito'] = $_GET['hash']){
  2.   // realizo la accion
  3. }else{
  4.   // no la realizo
  5. }

Ejemplo de uso:

eliminaramigos.php?idamigo=280&hash=4b3403665fea6


Por cierto, nombre "pepito" a la variable por decir algo, para ilustrar el ejemplo.

Última edición por cachusan; 22/03/2013 a las 10:29 Razón: aclaracion
  #9 (permalink)  
Antiguo 22/03/2013, 10:51
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por cachusan Ver Mensaje
Lo que planteas esta bien, el tema es que lo recomendable no es pasar el id de sesion por la query. Podes usar cualquier otro dato, llamalo hash, identificador único, como te parezca.

La idea sería esta:

Al momento de generar la sesion cuando autenticas generas una nueva variable llamada pepito, $_SESSION['pepito] = uniqid();

La función uniqid() genera un valor aleatorio. Este es el valor que vas a pasar en cada query, el cual debe ser requerido para ejecutar una determinada acción.

Como ese dato "pepito" lo tenes un tu sesion, lo podes comparar con el valor que viene en la query:

Código PHP:
Ver original
  1. if($_SESSION['pepito'] = $_GET['hash']){
  2.   // realizo la accion
  3. }else{
  4.   // no la realizo
  5. }

Ejemplo de uso:

eliminaramigos.php?idamigo=280&hash=4b3403665fea6


Por cierto, nombre "pepito" a la variable por decir algo, para ilustrar el ejemplo.
orales, si te entendí :D

ahora estoy viendo las dos opciones.
si por post o por get con el has.

lo que veo es que por post no ocupas nada mas que presionar el botón .
¿mas sencillo no?
¿cual me recomiendas?
¿cual es mas seguro?
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #10 (permalink)  
Antiguo 22/03/2013, 10:54
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por minombreesmm Ver Mensaje
orales, si te entendí :D

ahora estoy viendo las dos opciones.
si por post o por get con el has.

lo que veo es que por post no ocupas nada mas que presionar el botón .
¿mas sencillo no?
¿cual me recomiendas?
¿cual es mas seguro?
Jejeje, cualquiera de las dos son manipulables del lado del cliente.
  #11 (permalink)  
Antiguo 22/03/2013, 11:04
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por cachusan Ver Mensaje
Jejeje, cualquiera de las dos son manipulables del lado del cliente.
jaajaaj sabes que.. estuve analizando, y para enviar por post, se supone que es para enviar un dato de texto jejes..
y el botón solo llamaría al form, pero de todas formas ese form se puede llamar por link. jejes es verdad es mas seguro el hash
dices que es manipulable por el cliente pero de aquí a que le atine al numero ramdom

o a que te refiere a que es manipula ble con que hay formas de saber el numero hash del otro usuario?
no me imagino como XD
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 22/03/2013 a las 11:15
  #12 (permalink)  
Antiguo 22/03/2013, 13:12
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por cachusan Ver Mensaje
Jejeje, cualquiera de las dos son manipulables del lado del cliente.

por cierto.. si entras a la pagina
http://soycompatible.com/enlaces/conocer-gente.aspx
las imagenes no se muestran, tiene errores.
creo que siempre es conveniente subir la pagina hasta que esta terminada no.
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #13 (permalink)  
Antiguo 22/03/2013, 13:49
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: cerrar sesión en php, cual es la forma correcta?

Interesante debate... (lo digo enserio)

Pero me parece medio tomado de los pelos "SI ALGUIEN JUGANDO ENVIA EL LINK" o sea... lo mejor sería que ocultes el LINK con Javascript u otro método (facebook hace eso) y ya... si bien puede ocurrir, tambien podría alguien enviar un codigo malicioso para redireccionarlo a un VIRUS, que me parece más peligroso que si se cierra una session...

En todo caso, si se cierra una session, vuelves a hacer login y ya.. aunque la opcion de usar un hash no es mala, es más es implementada por el foro mismo, si te fijas en la url que indica cuando vas al boton FINALIZAR SESION..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #14 (permalink)  
Antiguo 22/03/2013, 14:05
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por loncho_rojas Ver Mensaje
Interesante debate... (lo digo enserio)

Pero me parece medio tomado de los pelos "SI ALGUIEN JUGANDO ENVIA EL LINK" o sea... lo mejor sería que ocultes el LINK con Javascript u otro método (facebook hace eso) y ya... si bien puede ocurrir, tambien podría alguien enviar un codigo malicioso para redireccionarlo a un VIRUS, que me parece más peligroso que si se cierra una session...

En todo caso, si se cierra una session, vuelves a hacer login y ya.. aunque la opcion de usar un hash no es mala, es más es implementada por el foro mismo, si te fijas en la url que indica cuando vas al boton FINALIZAR SESION..
si ya lo veo
Código HTML:
Ver original
  1. <a rel="nofollow" href="http://www.forosdelweb.com/login.php?do=logout&amp;logouthash=1363982464-2df6c7ecf249cea2e16a3de2e1793ad3f0dbb339" onclick="return log_out('¿Realmente quieres finalizar tu sesión?')">Finalizar Sesión</a>

entonces creo que para la seguridad es bueno usar hash en casi todo verdad
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #15 (permalink)  
Antiguo 22/03/2013, 14:09
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: cerrar sesión en php, cual es la forma correcta?

Si es buena... aunque tambien te daras cuenta de que usa un ALERT para prevenirte... si le diste OK va al sitio.. o sea, el foro usa 2 mecanismos de seguridad ante esto... (desconozco la programación interna pero es lo que se deduce)
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #16 (permalink)  
Antiguo 22/03/2013, 14:16
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: cerrar sesión en php, cual es la forma correcta?

Cita:
Iniciado por loncho_rojas Ver Mensaje
Si es buena... aunque tambien te daras cuenta de que usa un ALERT para prevenirte... si le diste OK va al sitio.. o sea, el foro usa 2 mecanismos de seguridad ante esto... (desconozco la programación interna pero es lo que se deduce)
si esta muy validado, de hecho copie la url
y me mando esto
"
Aviso del Foro
A ocurrido un error al intentar cerrar la sesión. Haz clic aquí para finalizar la sesión."

y eso fue por que se remplaza el anberson

el codigo es asi

Código HTML:
Ver original
  1. http://www.forosdelweb.com/login.php?do=logout&logouthash=1363983390-20c0189a38a469840b3c3ce0e1b19b34496e795b
http://www.forosdelweb.com/login.php...b19b34496e795b
y asi fue como se me cerro la sesion..
solo copie y pegue el link..
en todo caso no importa mucho eso, quien va averiguar mi has

me parece interesante como hay varias webs que tienen problemas de seguridad básicas.
y que mejor demostración de buena seguridad como esta web, que se dedica a la programación y otras cosas mas
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 22/03/2013 a las 14:27
  #17 (permalink)  
Antiguo 22/03/2013, 15:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: cerrar sesión en php, cual es la forma correcta?

Si un usuario puede compartir un enlace y que de ahí cierren (o tomen control de) su sesión, entonces no está bien planeada la seguridad del sitio, así de fácil.

Ahora, para que tu sesión sea válida en todo el sitio usa session_set_cookie_params() especificando / para el dominio, de esta forma, no importa si estás en sitio.com o sitio.com/index.php o sitio.com/carpeta/otro.php, la sesión estará activa en cada uno de ellos.
__________________
- León, Guanajuato
- GV-Foto
  #18 (permalink)  
Antiguo 27/02/2015, 15:47
 
Fecha de Ingreso: febrero-2015
Mensajes: 3
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: cerrar sesión en php, cual es la forma correcta?

como pudiera cerrar sesión en html¿?

Etiquetas: cerrar, forma, sesión
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:15.