Hablemos una vez más de seguridad

Así como el día pasado os traje las últimas novedades en mi “Sistema de login seguro”, hoy os vuelvo a traer novedades sobre este sistema.

Recordaréis que mi anterior post estaba enfocado a evitar que alguien haga trampas para loguear sintener todos los datos de login ¿verdad? Pues en esta actualización me centro en evitar que puedan suplantar la identidad de un usuario a través de las variables de sesión.

Hasta ahora, mis sistema al validar el usuario creaba dos variables de sesión: ‘dice_userid’ y ‘dice_username’. La primera era para saber quién era el logueado. El segundo era para ahorrarme líneas de código y accesos a la base de datos.

Sin embargo, este sistema es, cuanto menos, muy débil. Por ello, he diseñado un nuevo sistema:

-Al validar el usuario, se genera una variable de sesión con un nombre aleatorio y un valor aleatorio.

-A continuación, se crea una entrada para la ip desde la que ha accedido (si ya existía para esta ip, se actualiza) donde se introduce la ip, el nombre de la variable, el contenido de la variable y la id del usuario.

-El index ahora lo que hace no es comprobar si existe la variable de sesión ‘dice_user’. Ahora lo que hace es llamar a una función que comprueba si existe una entrada para la ip del cliente, si el nombre de la variable coincide con la de dicha entrada y si el valor de la variable coincide con el de nuestra entrada. Si alguna de estas comprobaciones falla, devuelve un -1. Si no, devuelve el id del usuario, el cual utilizaremos para obtener los privilegios que le corresponden, etc…

La verdad, me siento orgulloso de este sistema. Todavía no lo tengo del todo implementado, aunque es 100% funcional. Debería de haberlo terminado para el sábado a la noche, pero me retrasé un tanto por requerimientos personales. A ver si para finales de esta semana lo implemento en la demo que tengo online en http://dicesystem.com.es

One response to “Hablemos una vez más de seguridad”

  1. Avatar

    Algún día me explicarás por qué te complicas tanto.

    Si te preocupa que alteren las variables de sesión simplemente fírmalas con un CMAC. También puedes añadirles una caducidad explícita.

Leave a Reply