Desarrollar aplicaciones web, implica el uso de bases de datos, y con ello usar identificadores en los regístros para extraer información específica. Sin embargo, al igual que el desarrollo de algoritmos, hay diversas formas de ubicar el identificador en una aplicación para extraer la información solicitada. Ustedes dirían que esto es de primaria para un desarrollador, pero por más o menos experiencia que se tenga, nunca esta de más resaltar este tipo de detalles. Escribo esta entrada por que hace poco tiempo, me topé con este error en un sistema que úso ampliamente, y que otros colegas ya se habían percatado del error, sin embargo me reservo el derecho de mencionar en donde lo encontré. A continuación mencionaré tres formas de almacenar y extraer el identificador en una aplicación web durante la navegación.
Enviar el identificador por campo de texto en formulario.
Un metodo un tanto inseguro pero adecuado para manejar información que no requiere de mucha seguridad, esta forma consiste en utilizar un campo oculto de texto en un formulario para especificar que identificador tiene la información de la base de datos. Este es el tipo de error que me encontré en el sistema antes mencionado, el campo de texto no estaba oculto, solo desconectado. Gracias Firebug se puede modificar el valor de este campo de texto y hacer la petición de información, modificandolo podía extraer información de otros usuarios, ya que ese identificador era el del usuario. Esta forma la había visto aplicado en paneles de administración, que despues de haber pasado una capa de seguridad (como un inicio de sesión) podia ser utilizado. A pesar de ser utilizado en un panel de administración, los filtros eran aplicados adecuadamente en el lenguaje de programación del lado del servidor y no había gran problema apesar de que se podía modificar.
Utilizando cookies para compartir información.
Gracias a los cookies, podemos guardar pequeños fragmentos de información en el navegador y que son leídos únicamente por el dominio que fue creado, sin embargo, a mi criterio esta forma tiene seguridad média debido a que no queda excenta de modificaciones por parte del usuario cliente. Las cookies las habia visto utilizadas para identificar a un usuario y no presisamente en la base de datos, como por ejemplo podemos guardar una cookie que diga cuantas veces el usuario a visitado cierta pagina, entre otras cosas. También la he visto aplicada para la identificación de usuarios, sin embargo no recomiendo hacer esto sin tener ciertos filtros de seguridad que permitan saber si el usuario efectivamente es el, ya que se presta muchas veces al robo de cookies. Podemos hacer un registro a la base de datos para guardar cierta información temporalmente y que sea modificado unicamente por el lenguaje de programación del lado del servidor y guardar el identificador del registro en una cookie, sin embargo esto sería como emular la función de las sesiones, que en un momento comentaré.
Utilizar sesiones, mas seguro y cómodo.
Utilizar sesiones es mas o menos como lo habia mencionado en las cookies, pero estas son implementadas por el lenguaje de programación. Una sesion es.. valla una sesión que envía una cookie al usuario con un identificador y que nosotros podemos manejar información como variables que son almacenadas temporalmente en el sistema y accedidos por el lenguaje de programación. Esto es mas trabajo del lenguaje de programación y no tenemos que aplicar filtros de seguridad para poder validar las sesiones. Este método es mas seguro y comodo de usar, ya que con solo un arreglo de una variable superglobal ( en el caso de PHP ) podemos acceder a la información, inicializando previamente la sesión. Podemos crearlas, sobreescribirlas y eliminarlas como si fueran variables comunes y si el identificador de la sesion es transferida a otra PC el lenguaje ya no la toma como válida. Estas variables no pueden ser visualizadas por el usuario, lo que las hace mas seguras.
Como vemos, aquí estan algunas formas de proteger la seguridad de su información y sus usuarios, tengan cuidado de donde extraen los identificadores, ya que si son modificables se puede prestar a acceder a información que muchas veces cierto usuario no debe de ver o inclusive modificarla.
Saludos y espero les haya ayudado este pequeño post.
Imágen vía: Nogc Ha Flickr
es exactamente el mismo error que encontre hace unos años.. creeme les notifique a los encargados del sistema incluso hize un video de lo facil que era mostrar los datos de los demas usuarios, y mandar mediante un simple ciclo miles de peticiones a la funcion que genera los pdfs.. y aun sigue ahi.. intacto =)