Cuando se desarrollan aplicaciones web, por lo general nos concentramos más en las funcionalidades y se descuida un aspecto muy importante como lo es la seguridad, y al estar disponibles en Internet, se hacen susceptibles a todo tipo de usuarios, algunos de los cuales no llegan con buenas intenciones, sino para hacer daño a través de distintas practicas como lo son la inyección de código SQL, el Cross Site Scripting, la manipulación de variables y la explotación de funcionalidades importantes como el recordatorio de contraseñas, por solo mencionar algunas de las más usadas para hacer vandalismo informático.
Teniendo en cuenta que una aplicación web no solo debe cumplir a cabalidad con las funciones para las cuales fue creada, sino que debe también proteger la información, es importante la confidencialidad, integridad, autenticación, autorización, disponibilidad y privacidad que ayudaran a salvaguardar la información.
Dentro de nuestra aplicación web se tuvieron en cuenta los siguientes aspectos:
- Autenticación: Es el proceso de verificación de la identidad de una persona (login/password). Este aspecto se tuvo en cuenta en nuestra aplicación ya que se manejaron dos roles, el de administrador y usuario Idis.
- Autorización: Se refiere a los privilegios de cada uno de los usuarios de la aplicación. El administrador tiene como su mayor privilegio la gestión de usuario, por medio del cual adiciona, modifica y elimina miembros de la aplicación. De igual forma gestiona su perfil, maneja su propio calendario en cual se pueden colocar actividades públicas y privadas; gestiona su libreta de direcciones, y administra sus archivos, lo que implica subir, eliminar y descargar. El usuario Idis difiere sólo en que el no puede gestionar los usuarios, las demás funcionalidades son idénticas a las del administrador. Si una persona intenta ingresar por la url no estando autenticado, no podrá acceder a ninguna de las páginas donde se requiere autenticación, ya que el sistema se encuentra blindado contra este tipo de accesos, además si una persona se autenticó como usuario Idis no podrá ingresar por la url a las páginas del administrador, ya que sólo están habilitadas las de usuario Idis y de la misma forma ocurre con el administrador.
- Disponibilidad: La aplicación está diseñada para estar disponible los 7 días de la semana a cualquier hora del día.
- Privacidad: Implica confiabilidad de los datos al solo permitir que sean accedidos por sus propietarios. En la aplicaciones es visto en las diferentes funcionalidades que se ofrecen a los usuarios, como es el caso de la libreta de direcciones, el calendario, que tienen la posibilidad de manejar a voluntad si una actividad es pública o privada y el gestor de archivos, en donde los archivos que se suben son accedidos por los usuarios de la aplicación. Una excepción en la privacidad de la información es el gestor de usuarios, pues la información del perfil de cada uno de los miembros no sólo es accedida por ellos, sino también por el administrador, algo que se estableció como regla del negocio siendo así otra funcionalidad del administrador.
Algo más a tener en cuenta es que los errores de la aplicación y el desconocimiento de estos por los usuarios, no garantizan seguridad, pues el simple hecho de ocultar algo no impide que a mediano o largo plazo llegue a ser descubierto aunque tampoco es ninguna garantía que no será descubierto a corto plazo. Además, teniendo en cuenta que la entrada y salida de información es el principal mecanismo que dispone un atacante para enviar o recibir código malicioso contra el sistema, las características de los datos de entrada se han predefinido, permitiendo su verificación cada vez que se trata de ingresar información en la base de datos. Dentro de las consideraciones que se tienen en cuenta para impedir código malicioso está el restringir la longitud de las cadenas e impedir que se ingresen caracteres “<” y “>”, pues los script se caracterizan por tenerlos obligatoriamente.
Finalmente, las funcionalidades que se tienen para impedir el código malicioso fueron reutilizadas de los componentes que provee kumbiaFramework siendo estos de confianza para este propósito, ya que resuelven el problema de forma correcta.