Anuncios

Bienvenidos sean a este post, hoy hablaremos de forma teorica como segurizar una aplicacion.

Anuncios

En los posts anteriores hemos diseñado una aplicacion cliente-servidor. En el caso del diseño planteamos una aplicacion de tipo Dropbox, donde almacenamos y recuperamos archivos a traves de internet mediante distintos dispositivos. En la practica solo vimos como crear una aplicacion que espera por el mensaje de otro, servidor, y una encargada de enviar ese mensaje a la aplicacion anterior, cliente. Esta nos sirvio para entender como establecer una conexion entre los dos sockets y poder enviar el mensaje por internet.

Anuncios
Anuncios

Como dijimos, esto es la base de todas las aplicaciones que trabajan con la red. Pero las comunicaciones entrantes no son solamente para esto, los virus tambien llegan de esta forma a nuestros equipos y otras amenazas de indole peligrosa. Esto es asi porque las aplicaciones de red siempre implican que un puerto de red estara abierto. Si alguien sabe el puerto exacto de tu aplicacion puede usarlo pasa introducir introduccion falsa de protocolo. Para evitar esto, se deben tomar algunas medidas del lado del servidor pero tambien del lado del cliente. Comentemos dos de las cosas mas basicas mas importantes:

  • Autenticacion
  • Autorizacion
Anuncios

La autenticacion es el proceso de validacion de acceso del cliente. Esto es para que cualquier conexion entrante recibida no sea respondida inmediatamente. Es decir, antes de enviar y recibir datos desde y hacia el cliente, el servidor debe estar seguro que el cliente es valido. Como la mayoria de los casos, esto se hace mediante un usuario o correo y una contraseña. Si es valido, se le permite el acceso y a su vez hasta donde puede acceder en el sistema.

Anuncios
Anuncios

La autorizacion es lo siguiente porque se encarga de establecer lo que puede hacer en el sistema. Es un conjunto de permisos que se establecen para un grupo de usuarios. Tomemos como ejemplo, la aplicacionn que diseñamos anteriormente. Supongamos que tenemos el acceso gratuito con una cantidad X de espacio para almacenar. Luego agregamos una opcion de suscripcion paga donde entre varias cosas ofrecemos mas espacio de almacenamiento, mediante la autorizacion el sistema sabra la cantidad que permite al usuario utilizar para almacenar los archivos recibidos.

Anuncios

Por lo general, el proceso para todo esto es de la siguiente manera. Primero nos conectaremos al servidor y este recibira los datos de conexion, direccion IP y puerto. A su vez, el servidor para saber quien se conecta debe recibir las credenciales del usuario enviadas por el cliente. Tal como mencionamos anteriormente, lo usual es enviar al identificador unico (usuario o correo) y la contraseña para poder acceder al sistema. El servidor chequea los datos recibidos con los datos almacenados de usuario, por lo general es una base de datos, y verifica si son validos o no.

Anuncios

Una vez validado nuestro usuario, la respuesta del servidor permite al usuario seguir adelante o modificar la interfaz grafica para saber que sucedio. Esto ultimo, implica a cuando ingresamos mal el usuario o la contraseña y esto hace que el servidor envie una respuesta para indicarnos que se ingreso mal un dato. Mas alla de este primer paso necesario, es mejor validar todo la informacion que viene desde el lado del cliente.

Anuncios
Anuncios

Supongamos que para enviar el usuario y contraseña del usuario, lo hacemos un objeto de tipo JSON y este solo tendra dos campos: uno para el usuario y otro para la contraseña. Un primer ataque puede ocurrir con esto. Por ejemplo, el cliente puede enviar un campo de usuario y contraseña muy grandes lo cual puede derivar en un overflow y romper el sistema de autenticacion. El servidor debe chequear esto para evitar inconvenientes de seguridad desde la ingreso al sistema. Otra forma de ataque, es realizar muchas solicitudes por segundo desde uno o multiples clientes. Si realizamos muchas solicitudes de autenticacion por segundo causa que el servidor procese intensamente estas solicitudes y desperdiciar recursos para cumplirlos. Una posibilidad de solucion es chequear el ratio de solicitudes por usuario, por ejemplo limitarlos a una solicitud por segundo.

Anuncios
Anuncios

Estos tipos de ataques, por lo general mal intencionados, son denominados como ataques DoS (Denial of Service). Este tipo de ataques son para baja al sistema y no pueda ser accedida. Tambien existe una version ma avanzada de este denominada como DDoS (Distributed Denial of Service). Es igual que al anterior, tambien realiza muchas solicitudes al servidor pero lo hace desde multiples clientes al mismo tiempo. Una solucion simple para esto, es crear una blacklist para almacenar las direcciones IP que intentan bajar al sistema con las multiples solicitudes y proceder a bloquear su acceso. Este es par de ejemplos de ataques que podemos recibir pero existen muchos mas y debemos estar preparados para poder contrarrestarlos.

Anuncios

En resumen, hoy hemos visto como segurizar una aplicacion de red, todo en forma teorica, las dos formas mas basicas para permitir el acceso al sistema, y otro para poder establecer hasta donde podra actuar, asi como establecer algunas caracteristicas, y un par de posibles ataques que podemos recibir en nuestra aplicacion. Espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50