Desarrollar un sitio o una aplicación web no sólo exige implementar las funciones pedidas por el impulsor del proyecto. El estándar ISO/IEC 9126 establece seis aspectos principales para determinar la calidad de un producto software, divididos cada uno en tres o más cualidades. Esto significa que, si queremos que nuestro software sea de calidad, debemos incluir muchas características además de las pedidas explícitamente por, por ejemplo, el cliente.
Una de ellas es la seguridad. Las aplicaciones web deben estar protegidas contra ataques que pueden brindar acceso a usuarios malintencionados o impedirlo a usuarios legítimos:
- Denegación de servicio (DoS/DDoS). Consiste en saturar el servidor donde se aloja el sitio enviándole una cantidad excesiva de peticiones en poco tiempo, de manera que colapse y ya no pueda atender accesos legítimos. En general, las aplicaciones de DDoS dejan en el servidor huellas fáciles de rastrear, permitiéndonos identificar y bloquear las IP atacantes. Algunas herramientas reconocen cuándo el servidor es víctima de estos ataques y desvían el tráfico malicioso.
- Defacement. Se trata de una modificación de una o varias páginas del sitio web, para reemplazar su contenido por un mensaje del autor del ataque. Para ello son necesarios los datos de acceso del administrador. La forma más común de conseguirlos es a través de SQL injection, una técnica que consiste en hacer consultas en lenguaje SQL a la base de datos del sitio para acceder a información privada. Para evitarla podemos impedir la inserción de ciertos comandos a través de expresiones regulares.
- Phishing. Esta técnica no involucra un ataque directo al sitio web, pero decidimos incluirla por el peligro que puede representar para nuestros usuarios. Una de sus variantes es conducir a la víctima a una página de login que simula brindarle acceso a nuestra aplicación, pero en realidad envía su usuario y contraseña a una base de datos del atacante. Generalmente, el usuario es luego redirigido al sitio web real. En esa instancia podemos reconocer el origen del tráfico y advertirle al usuario sobre lo que acaba de hacer, sugiriéndole que cambie su contraseña.
Proteger a los usuarios de nuestra aplicación es indispensable para brindarles un servicio de calidad.