Get it on Google Play

La seguridad cuando desarrollas una aplicación web

12-11-2016
 
Seguridad en aplicaciones web

Seguridad en aplicaciones web

Las aplicaciones juegan un papel cada vez mas importante en la vida de las personas y los negocios. Y tal como crece la importancia de la tecnología crece de igual manera los problemas de seguridad. En este post voy a poner 6 problemas de seguridad que hay que tener controlados des del minuto 0 cuando empezamos un desarrollo web:

Inyecciones SQL

Las inyecciones SQL son los reyes en cuanto a brechas de seguridad se refiere. Básicamente si el desarrollador es descuidado a la hora de montar las peticiones a bases de datos con parámetros que le lleguen de formularios, URLs, etc. se puede montar un buen follón.

Es importante que todas las variables que recojamos de formularios, URLs, etc. sean correctamente tratadas y seamos muy cuidadosos con las llamadas SQL. En este sentido, es muy recomendable usar algún tipo de librería o framework de persistencia que nos asegure que las peticiones a la base de datos se escapan correctamente.

Ataques CSRF(Cross-Site Request Forgery)

Un ataque CSRF es un ataque que fuerza al usuario final(Normalmente mediante engaño) a ejecutar acciones sobre una web en la que esta autenticado. El ejemplo clásico, estás logueado en la línea abierta de tu banco, visitas otra web(Pero sigues logueado) que resulta que es maliciosa, en esta web hay un link que rellena un formulario para hacer una transferencia a tu banco(Aprovechando que ya estas logueado en el).

Frameworks como Spring o estandares como el de portlets ya incorporan mecanismos de protección para que las acciones críticas de tu web no puedan ejecutarse desde un web malicioso. Básicamente se trata de poner un atributo que solo formularios o links creados desde la propia web tienen y que terceros no pueden simular.

En el post “Seguridad IT: Protegiéndote de ataques CSRF con Spring y Angular” explico como implementar este tipo de protecciones en Spring. Para portlets Liferay se trata de dominar las URL de tipo ‘ActionURL’.

XSS(Cross-site scripting)

Este tipo de ataque consiste en intentar publicar código malicioso en una web como HTML o Javascript. Se trata de aprovechar un descuido del desarrollador que que permite publicar cosas a sus usuarios, por ejemplo, si en nuestra web permitimos poner comentarios, debemos escapar bien ese comentario para que no contenga código Javascript o HTML que se ejecutará en la página.

Ataques por fuerza bruta

Si no lo controlamos, cualquiera puede desarrollar un script que se dedique a probar ha hacer login en nuestra aplicación hasta dar con un usuario y passwords correctos. No es nada complejo.

Control de los datos del usuario

Otro foco de inseguridad puede ser un descuido a la hora de mostrar datos al usuario. El típico caso es cuando por la URL puedes acceder a datos de otro usuario(Por ejemplo, fichas o formularios aunque puede ser mucho mas grabe cuando además también se pueden ejecutar acciones o ver información sensible).

Control del Login del usuario

Cada vez es mas importante controlar cuando y desde donde hace login el usuario. Un simple mensaje al hacer login recordándole la última vez que hizo login al usuario puede hacer saltar la voz de alarma.

Empresas como Google o Linkedin te mandan un eMail cada vez que te logueas desde un dispositivo con ellos. Incluso Linkedin implementa el doble login, es decir, que primero te logueas normalmente y luego te mandan un mensaje con un código que debes usar para verificar que eres tu.

Acceso a ficheros desde URLs

Este tipo de ataques han hecho estragos en módulos de WordPress o Drupal. Básicamente es aprovechas el descuido del desarrollador que permite descargar ficheros(Normalmente CSS o JS) usando una URL. Si el desarrollador ha sido descuidado puede terminar descargando todo tipo de ficheros, incluidos ficheros con configuraciones varias.

Esto es todo?…

Pues no, el alcance de este post abarca solamente la visión del desarrollador de software. Puedes tener agujeros de seguridad por no tener actualizado software de terceros(CMSs, módulos, etc.) o otros ataques que no dependen de tu programación(DoS u otros).

Interesado en formación Liferay?

 

Leave a Reply