Tema 1
La seguridad en aplicaciones web estudia cómo proteger sitios, sistemas y APIs que procesan datos, autentican usuarios y ejecutan lógica de negocio a través de internet o redes internas. Su objetivo no es solo evitar ataques, sino asegurar que la aplicación funcione de manera confiable, controlada y resistente frente a errores, abuso y exposición indebida.
Hoy casi toda organización depende de aplicaciones web. Sistemas de ventas, banca en línea, paneles administrativos, plataformas educativas, redes sociales, tiendas virtuales, intranets, portales de clientes y APIs consumidas por aplicaciones móviles comparten una característica: exponen funcionalidad a través del navegador o de peticiones HTTP.
Esa capacidad de llegar a usuarios desde cualquier lugar también amplía el riesgo. Una aplicación web recibe entradas continuas desde formularios, URLs, encabezados, cookies, archivos, parámetros JSON y llamadas de terceros. Cada dato recibido puede ser útil para el negocio o convertirse en una oportunidad de ataque si no se procesa correctamente.
La seguridad en aplicaciones web se ocupa precisamente de eso: evitar que un usuario o sistema pueda hacer algo distinto de lo permitido, acceder a datos que no le corresponden, alterar el comportamiento esperado, ejecutar instrucciones maliciosas o afectar la disponibilidad del servicio.
Desde un punto de vista funcional, una aplicación web es un software accesible a través de HTTP o HTTPS, con una interfaz de usuario o una API que permite consultar, modificar o procesar información. Desde un punto de vista de seguridad, es una combinación de componentes que deben operar bajo control.
Entre esos componentes se encuentran:
Cuando se habla de proteger una aplicación web, no solo se protege código. También se protegen activos de negocio, confianza de usuarios y procesos operativos.
| Activo | Ejemplos | Riesgo si se compromete |
|---|---|---|
| Cuentas de usuario | Clientes, administradores, operadores | Acceso no autorizado, fraude, suplantación |
| Datos sensibles | Contraseñas, documentos, pagos, información personal | Filtración, sanciones legales, pérdida reputacional |
| Lógica de negocio | Compras, descuentos, transferencias, permisos | Abuso funcional, manipulación de procesos, pérdidas económicas |
| Disponibilidad del sistema | Portales, APIs, paneles internos | Interrupción del servicio, caída operativa |
| Integridad de los datos | Registros, pedidos, balances, historiales | Alteración de información y decisiones incorrectas |
| Infraestructura asociada | Servidor, contenedores, almacenamiento, secretos | Escalada del incidente más allá de la aplicación |
Las aplicaciones web están expuestas, procesan datos valiosos y suelen cambiar con rapidez. Eso las vuelve atractivas para atacantes y difíciles de proteger si el desarrollo no incorpora seguridad desde el inicio.
Existen varias razones por las que son un objetivo recurrente:
Además, la mayoría de los incidentes web no requieren técnicas exóticas. Frecuentemente aprovechan fallas conocidas: validaciones débiles, controles de acceso incompletos, sesiones mal gestionadas o configuraciones inseguras.
Los objetivos de seguridad sirven para definir qué debe preservarse en una aplicación web y qué controles conviene implementar.
En una aplicación real estos objetivos conviven. Un sistema de pagos, por ejemplo, necesita confidencialidad de los datos, integridad de las operaciones, disponibilidad continua y trazabilidad suficiente para investigar errores o fraudes.
Una aplicación funcional hace lo que el usuario espera en condiciones normales. Una aplicación segura también se comporta correctamente en condiciones adversas: entradas maliciosas, usuarios curiosos, abuso intencional, errores de configuración, automatización hostil o integración defectuosa.
Una aplicación puede verse bien y cumplir su objetivo de negocio, pero seguir siendo insegura si presenta alguno de estos problemas:
La superficie de ataque es el conjunto de puntos por los que una aplicación puede ser observada, utilizada o abusada. Todo punto de entrada, toda función expuesta y toda dependencia accesible forman parte de esa superficie.
En aplicaciones web, la superficie de ataque suele incluir:
Reducir la superficie de ataque no significa quitar valor al producto, sino exponer solo lo necesario y controlarlo adecuadamente.
Un error frecuente es analizar solo la página visible. La superficie real de una aplicación suele ser mucho mayor. Para entenderla conviene hacer preguntas simples y concretas:
Estas preguntas ayudan a pasar de una visión superficial a una visión de riesgo real.
Supongamos una tienda en línea con registro, carrito, pagos, historial de compras y panel administrativo. Su superficie de ataque no es solo la página principal.
| Componente | Entrada o función | Riesgo típico |
|---|---|---|
| Login | Email y contraseña | Fuerza bruta, enumeración de usuarios, robo de sesión |
| Búsqueda | Texto ingresado por el usuario | Inyecciones, XSS reflejado, abuso automatizado |
| Carrito | Cantidad, precio, cupones, identificadores | Manipulación de lógica de negocio |
| Subida de comprobantes | Archivos e imágenes | Carga de contenido peligroso o consumo excesivo |
| API móvil | JSON, tokens, endpoints de consulta | Exposición de datos, abuso de tokens, CORS inseguro |
| Panel admin | Acciones de gestión | Escalada de privilegios e impacto masivo |
Las amenazas web más relevantes no surgen al azar. Se repiten porque muchas aplicaciones comparten los mismos errores de diseño e implementación.
Durante el curso iremos profundizando cada una de estas categorías, pero desde el principio conviene entender que el problema no es solo técnico. Muchas vulnerabilidades aparecen porque la aplicación confía demasiado en el cliente o modela mal sus reglas de negocio.
En seguridad de aplicaciones web, OWASP es una referencia ampliamente utilizada. No es una herramienta ni un estándar obligatorio, sino una comunidad y un conjunto de guías prácticas que ayudan a identificar, priorizar y mitigar riesgos frecuentes.
Uno de sus aportes más conocidos es el OWASP Top 10, una lista de categorías de riesgos comunes en aplicaciones web. Su valor no está en memorizarla como un listado, sino en usarla como mapa para revisar si una aplicación está expuesta a fallas típicas de autenticación, autorización, validación, configuración o monitoreo.
Antes de estudiar vulnerabilidades puntuales conviene fijar principios generales. Son ideas que orientan decisiones de arquitectura, programación y operación.
Muchos desarrolladores comienzan validando formularios en JavaScript para mejorar la experiencia del usuario. Eso está bien, pero no resuelve la seguridad. El navegador está del lado del usuario y puede ser manipulado. Un atacante puede alterar peticiones, omitir validaciones visuales, modificar cookies o llamar directamente a la API.
Por eso, las decisiones de seguridad reales deben tomarse en el servidor. El backend debe validar tipos, formatos, longitudes, rangos, permisos y estado del flujo. También debe decidir si el usuario autenticado puede ejecutar esa operación concreta sobre ese recurso concreto.
Una regla simple ayuda mucho: lo que se valida solo en el cliente mejora usabilidad; lo que se valida en el servidor protege la aplicación.
La mayoría de las aplicaciones web gira alrededor de tres ejes: datos, identidad y acciones. Si cualquiera de ellos se gestiona mal, la seguridad se degrada.
La seguridad aparece cuando el sistema mantiene control sobre esos tres ejes. Un sitio puede autenticar bien, pero fallar en autorización. Puede restringir funciones, pero exponer datos en respuestas excesivas. Puede almacenar datos correctamente, pero permitir operaciones no previstas por un error de lógica.
No todas las vulnerabilidades generan el mismo daño, pero incluso fallas aparentemente pequeñas pueden producir consecuencias graves según el contexto.
| Falla | Consecuencia técnica | Impacto de negocio posible |
|---|---|---|
| IDOR | Acceso a registros de otros usuarios | Filtración de datos y pérdida de confianza |
| XSS | Ejecución de scripts en el navegador | Robo de sesión, fraude, daño reputacional |
| SQL Injection | Lectura o manipulación de base de datos | Exposición masiva de información crítica |
| Sesión insegura | Secuestro de cuenta | Acceso no autorizado y operaciones fraudulentas |
| Subida de archivos insegura | Ejecución o almacenamiento peligroso | Compromiso del servidor o propagación del incidente |
Una aplicación no se vuelve segura por una única auditoría ni por agregar una cabecera HTTP. La seguridad debe acompañar todo el ciclo de vida del software.
Cuanto más tarde se descubre un problema de seguridad, más costoso suele ser corregirlo.
La seguridad no depende exclusivamente del programador. Intervienen distintos perfiles y cada uno influye en el resultado final.
Imaginemos un portal universitario donde los alumnos inician sesión, consultan notas, descargan comprobantes, actualizan datos personales y se inscriben a materias. A simple vista parece una aplicación administrativa sencilla. Sin embargo, la seguridad debe responder preguntas concretas:
La seguridad empieza cuando el equipo formula estas preguntas antes de que aparezca el incidente.
Este primer tema establece el marco general. A partir de aquí iremos recorriendo los mecanismos concretos con los que se protege una aplicación web real.
La seguridad en aplicaciones web es una disciplina esencial porque las aplicaciones modernas concentran usuarios, datos, decisiones y operaciones críticas. Protegerlas requiere entender su superficie de ataque, reconocer qué activos están en juego y asumir que cualquier entrada, integración o funcionalidad expuesta puede convertirse en un punto de abuso si no existe control.
En el próximo tema estudiaremos cómo funciona la comunicación web entre navegador, servidor y aplicación, porque comprender HTTP y el modelo cliente-servidor es indispensable para interpretar correctamente muchas vulnerabilidades y defensas.