LOGIN EN PHP, CERRAR SESION

Iniciado por chispita68, 28 Julio 2010, 18:44 PM

0 Miembros y 2 Visitantes están viendo este tema.

chispita68

Soy nuevo en php y bases de datos mysql, estoy en un problemas, en una pagina para ingresar al sistemas al momento de cerrar sesion no se como evitar regresar a la pagina donde estan sus datos, y se reenvien de nuevo, asi como la session de msn donde quieres regresar y te redirecciona a su pag principal, espero su ayuda
Para sobrevivir, te aferras a todo lo que conoces y entiendes y lo llamas realidad....
Pero el conocimiento y la comprensión son ambiguos.
La realidad puede ser una ilusión....
Todos los seres humanos viven con las creencias equivocadas
¿No es esa otra manera de ver las cosas?

Zazú

Es muy simple! :P

Mira...
logout.php
Código (php) [Seleccionar]

<? session_start();
if(!isset($_SESSION[algo])){
header("location:index.php");
} else {
session_unset();
session_destroy();
header("location:index.php");
}
?>


Eso comprueba primero que nada si existe la session algo si no existe lo manda al index, si existe destruye todas las sessiones y lo manda al index, ahi no se volverian a mandar los datos  ;)


Espero que te sirva!  ::)

jdc

Es buena la idea pero seria vulnerable a csrf...

Por ejemplo si te paso un link con un iframe a "tupagina.com/logout.php" se te cerraria la session al igual que si se ejecuta esa pagina desde una imagen en php xD creo que se podia quizas me estoy carrileando pero deberia funcionar...

Zazú

jaja tenes razón, igual así no lo uso yo le pase algo para que se guie un poco   :silbar:

Lo de la imagen..  ;D creo que no funcionaria, tendría que probar despues.

Suerte  ;)

jdc

Uffff....Deberias ver lo que hace WHK con una imagen xDDDDDDDD

jdc

¬¬ no preguntes por privado, lo mejor es tratar los temas en el foro ademas asi nos evitamos la sociabilizacion  >:D

Se me ocurre para arreglar el csrf (no lo he probado) en el login podrias ingresar un hash al azar y almacenarlo en la base de datos justo en ese momento e iniciar una session con ese hash y luego compararlo con el de tu db  :¬¬

Es mas sencillo de lo que parece solo entiendelo xD

chispita68

No tendria caso que se genera la clave al azar, en la mayoria de los sistemas, uno escribe su propia contraseña,
Para sobrevivir, te aferras a todo lo que conoces y entiendes y lo llamas realidad....
Pero el conocimiento y la comprensión son ambiguos.
La realidad puede ser una ilusión....
Todos los seres humanos viven con las creencias equivocadas
¿No es esa otra manera de ver las cosas?

jdc

Mira no lo voy a codear xD pero aqui tienes una idea

(login teorico)

Variables:

$numero_al_azar = rand(1,1999)
$usuario = chispita
$password = 1234
$hash_anti_csrf = md5($usuario,$numero_al_azar)

$hash_anti_csrf lo guardas en la db si el login es correcto y en una session o cookie, nada que ver con la contraseña.

(logout teorico)

existe la session de logueado?
   no = al index
   si, $hash_anti_csrf es igual al de el usuario?
      no = al index
      si, cierra session y manda al index


en la url de logout podrias recibir tu hash por get para que quedara algo como tupagina.com/logout.php?hash=234hj234h o que se yo

Zazú

jaja yo te lo codearia ya mismo, no me costaria pero estoy ocupado..

Lo que el dice es así...

Al crear la session de login, insertar en una tabla un hash con el usuario que logeo, al cerrar session que se envie por post o get el hash que generaste y si es correcto, que cierre la session en caso contrario no, si la borra que borre de la tabla tambien el hash y el usuario..


Perdon por repetir las palabras,estoy ocupado ahora te lo codeo :)
Responde aca, no te pienso responder un pm  >:D

braulio--

Parece que no hayan creado un logout anti-CSRF jamás.

En el login se crea una variable en $_SESSION que se llame token, algo así:

Código (php) [Seleccionar]

/* Login succesful */
$_SESSION['token'] = md5(sha1(rand(1,100000)); // Por ejemplo

Luego, se pone esto como enlace al logout :

Código (php) [Seleccionar]

<a href="logout.php?token=<?php echo $_SESSION['token']; ?>">Logout </a>


Y en logout.php

Código (php) [Seleccionar]

if ($_SESSION['token'] == $_GET['token'] )
{
session_destroy();
}


En mi opinión usar la base de datos no es necesario.