Hola Ivan, vi tu post y me parece realmente interesante, aunque estaba buscando precisamente la manera de evitar esto “Puede robarse el ID y utilizarse tranquilamente en cualquier otro navegador o PC”. No tengo mucha experiencia con la seguridad en php excepto el evitar poner directamente en los botones los llamados a las funciones, usar urls amigables, hacer por ajax post el guardado de datos.
Pero la seguridad en las sesiones es algo que me importa mucho, diste una buena explicación de las herramientas aunque de base dices que no son seguras y no se si sea exagerado usar una de esas en un site corporativo pequeño.
Espero encontrar mas post tuyos explicativos, gracias
Hay montones de librerías en webs como php classes u otras (supongo que ahora estarán en github). Las sesiones en PHP5 no permiten ser robadas de esta forma, no puedes usar un dato COOKIE y sobre escribirlo desde un GET. Eso ocurría en la época del blog anterior donde me preguntaste. igualmente si que se puede robar la cookie e inyectarla por lo que conviene meter alguna variable de sesión tipo “token” de control para saber que es la misma maquina la que se esta conectando y no otra desde otra ubicación. Este tipo de temas los tienen implementados los sistemas como oAuth pero no están pensados para bloquear sistemas sino dar paso por claves únicas por lo que estudiarlos solo serviría a modo teórico. Mi consejo es, si hay opensource utilízalo, es probable que tenga en cuenta detalles que no te percates, pero en temas como este comprueba que la actualización de bugs y soporte sigue activo porque podría ser algún tipo de script hecho a la prisa por algún novato y ser realmente un colador. Recuerdo haber usado un script de mensajero online y ser aquello un desastre… Como decía en aquel texto una buena forma de hacerlo seria utilizar la cadena del navegador y un trozo de ip por lo que seria bastante complicado engañar al sistema (aunque se seguiría pudiendo). Por ejemplo:
if (md5($_SERVER[‘HTTP_USER_AGENT’].substr($_SERVER[“REMOTE_ADDR”],0,6).’palabraExtraOculta’) != $_SESSION[‘token’]) die(‘hacking attack!’);
Este sistema podría ser saltado desde el mismo proxy o en la misma red con el mismo navegador… Porque no tiene en cuenta la IP del proxy.

