elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda con sistema de login
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con sistema de login  (Leído 2,362 veces)
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Ayuda con sistema de login
« en: 13 Octubre 2009, 22:14 pm »

Hola, estoy intentando desarrollar un sistema de login en php, al parecer todo funciona bien, pero lo que no me funciona es el sistema anti session hijacking.
Quisiera saber si alguien me puede ayudar a encontrar el problema.

Para probar el csrf, una vez logueado con tamper data trato de enviar logout pero eliminando el t= Entonces dice csrf attempt.

Pero para probar session hijacking, no me funciona el tema del $fingerprint, una vez logueado, abro otra pestaña con firefox, y accedo a la url viendo el contenido exlusivo, si abro otra pestaña y accedo a la url, pero modificando el user agent, no se cae, diciendo session hijacking attempt, como que no cambia la cadena $fingerprint, y ese es el problema que tengo.

Si alguien por favor también pudiera darme sugerencias para hacer un buen sistema de login, se lo agradecería también.

Código
  1. //editado porque no estaba bueno. Abajo encuentran un código más decente.
  2.  


« Última modificación: 14 Octubre 2009, 01:20 am por 0x0309 » En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Ayuda con sistema de login
« Respuesta #1 en: 14 Octubre 2009, 01:16 am »

Bueno, me respondo solo.

La solución fue comenzar a escribir todo de nuevo, pero basándome en funciones para así revisar y encontrar los errores.

Al final, no sé cual era el error, pero cree un código nuevo y funciona.

Este es el código, puede servirle a alguien.

/inc/auth.php
Código
  1. <?php
  2.  
  3. if (!defined('VER'))
  4. die('Hacking attempt...');
  5.  
  6. function sesionPorDefecto()
  7. {
  8.    cerrarSesion();
  9.    $_SESSION['logeado'] = false;
  10.    $_SESSION['anticsrf'] = 0;
  11.    $_SESSION['token'] = 0;
  12. }
  13.  
  14. function cerrarSesion()
  15. {
  16.    session_start();
  17.    session_unset();
  18. }
  19.  
  20. function estaLogeado()
  21. {
  22.    session_start();
  23.    if (isset($_SESSION['logeado'])
  24.        && $_SESSION['logeado'] === true) {
  25.        return true;
  26.    }
  27.    return false;
  28. }
  29.  
  30. function intentoCsrf()
  31. {
  32.    session_start();
  33.    if (!isset($_SESSION['anticsrf'])
  34.     || $_SESSION['anticsrf'] !== $_POST['t']
  35.     )
  36.    {
  37.     return true;
  38.    }
  39.    return false;
  40. }
  41.  
  42. function intentoSessionHijacking($fingerprint)
  43. {
  44.    if (estaLogeado()
  45.     && $_SESSION['token'] !== $fingerprint)
  46.    {
  47.     return true;
  48.    }
  49.    return false;
  50. }
  51.  
  52. ?>
  53.  
  54.  

/inc/filtros.php
Código:
es el code que se encuentra en:
http://foro.elhacker.net/php/filtro_sql_injection_y_filtro_xss-t270635.0.html
el foro no me deja postearlo.

/logout.php
Código
  1. <?php
  2. define('VER',1);
  3. require_once(dirname(__FILE__).'/inc/auth.php');
  4. require_once(dirname(__FILE__).'/inc/filtros.php');
  5.  
  6.  
  7. if (estaLogeado()
  8.   && !intentoCsrf())
  9. {
  10.    cerrarSesion();
  11.    echo 'Session closed.';
  12.    echo '<br/>';
  13.    echo '<a href="login.php">Go Login</a>';
  14.    die ();
  15. } else {
  16.    die ('Csrf attempt ...');
  17. }
  18.  
  19. ?>
  20.  

/login.php
Código
  1. <?php
  2. define('VER',1);
  3. require_once(dirname(__FILE__).'/inc/auth.php');
  4. require_once(dirname(__FILE__).'/inc/filtros.php');
  5.  
  6. $fingerprint = $fingerprint = md5('12345'.$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].'6789');
  7.  
  8. if (intentoSessionHijacking($fingerprint))
  9. {
  10.    cerrarSesion();
  11.    die('Session hijacking attempt ...');
  12. }
  13.  
  14.  
  15. if (!estaLogeado())
  16. {
  17.    if ($_POST['username'] && $_POST['password'])
  18.    {
  19. $username = antiSQLInjection($_POST['username']);
  20. $password = antiSQLInjection($_POST['password']);
  21.  
  22. //Hacer consulta en bd.
  23.  
  24. if ($username == 'carlos' && $password == 'entrar')
  25. {
  26.    $_SESSION['logeado'] = true;
  27.    $_SESSION['anticsrf'] = sha1('dfGFGsfsdf46433794bvcv' . uniqid(rand(), TRUE) . 'addsfFHf5efSAfr324');
  28.    $_SESSION['token'] = $fingerprint;
  29. }
  30.    }
  31. }
  32.  
  33. if (!estaLogeado())
  34. {
  35. ?>
  36.  
  37.    <form method='POST' action='login.php'>
  38.    <span>Username:</span>
  39.     <input name="username" type="text" maxlength="20" size="20" />
  40.    <span>Password:</span>
  41.     <input name="password" type="text" maxlength="15" size="20" />
  42.     <input name="login" type="submit" value="Login" />
  43.    </form>
  44.  
  45. <?php
  46. } else
  47. {
  48.    echo 'You are logged' . '<br/>';
  49.    echo '<a href="index.php">Go Home</a>';
  50.    echo ("
  51.    <form method='POST' action='logout.php'>
  52.        <input name=\"t\" type=\"hidden\" value=\"" . $_SESSION['anticsrf'] ."\" />
  53.        <input name=\"logout\" type=\"submit\" value=\"Logout\" />
  54.    </form>
  55.    ");
  56. }
  57. ?>
  58.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sistema de login en el que NO se pueda forzar el logueo por URL
PHP
‭lipman 6 4,109 Último mensaje 23 Junio 2011, 15:56 pm
por moyo18
Sistema de login.
PHP
lnvisible 4 3,016 Último mensaje 1 Diciembre 2011, 04:33 am
por #!drvy
[java] [python] Sistema de login.
Programación General
lnvisible 5 4,797 Último mensaje 22 Enero 2012, 22:45 pm
por lnvisible
Sistema de Login Seguro
PHP
GameAndWatch 6 9,237 Último mensaje 23 Junio 2012, 17:02 pm
por marko1985
Error al usar un sistema de login.
PHP
GonzaFz 0 1,413 Último mensaje 2 Febrero 2013, 03:51 am
por GonzaFz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines