Lección 11 de 16 · Nivel 3: Avanzado

Seguridad web y OWASP Top 10 (nivel conceptual)

  • ⏱ 15 min de lectura
  • ❓ 4 preguntas de repaso
  • ✍️ Ejercicio con solución
En esta lección
  1. Cómo funciona una aplicación web en 1 minuto
  2. El OWASP Top 10 en su edición 2025
  3. Cuatro riesgos a fondo
  4. Si tienes una tienda online o un sitio con gestor de contenidos
  5. Caso: revisión de seguridad de una tienda en Medellín
  6. Seguridad en todo el ciclo de desarrollo
  7. Errores comunes
  8. Resumen
Lo que lograrás en esta lección
  • Entender, sin necesidad de programar, cómo funciona una aplicación web y dónde suele fallar.
  • Conocer las diez categorías del OWASP Top 10 en su edición 2025 y qué cambió frente a 2021.
  • Saber cómo se previenen los riesgos más comunes: control de acceso, inyección y mala configuración.
  • Proteger una tienda online o un sitio con gestor de contenidos con una lista práctica.
  • Integrar la seguridad en todo el ciclo de desarrollo, no solo al final.

Las aplicaciones web (tiendas online, portales de clientes, sistemas internos) son la cara visible de casi cualquier negocio, y por eso un blanco frecuente. El proyecto OWASP publica el Top 10, una lista de las categorías de riesgo más importantes para las aplicaciones web que se usa en todo el mundo como punto de partida para desarrolladores, auditores y dueños de negocios. Esta lección es conceptual y defensiva: aprenderás qué significa cada categoría y cómo se previene. Probar la seguridad de un sitio ajeno sin autorización por escrito es ilegal; los ejemplos se describen para que revises y protejas tus propias aplicaciones.

10 categoríasforman el OWASP Top 10 en su edición 2025
2 nuevasfallas en la cadena de suministro de software y manejo incorrecto de condiciones excepcionales
N.º 1sigue siendo el control de acceso roto, que ahora incluye la falsificación de solicitudes del lado del servidor (SSRF)
  1. Cómo funciona la web
  2. El Top 10 de 2025
  3. Cuatro riesgos a fondo
  4. Tu tienda online
  5. Desarrollo seguro

Cómo funciona una aplicación web en 1 minuto

Tu navegador (el cliente) envía una solicitud HTTP a un servidor: "dame la página del pedido 1045". El servidor ejecuta el código de la aplicación, consulta la base de datos y devuelve una respuesta. Para recordar quién eres entre una página y otra, usa una sesión, normalmente guardada en una cookie. Casi todos los problemas de seguridad web aparecen cuando el servidor confía demasiado en lo que le envía el cliente: un número de pedido, un texto en un formulario o un archivo subido. La regla de oro del desarrollo seguro es: todo lo que viene del usuario se valida en el servidor.

El OWASP Top 10 en su edición 2025

OWASP es una fundación sin fines de lucro dedicada a la seguridad del software. Su Top 10 no es una norma obligatoria, sino un documento de concienciación basado en datos de miles de aplicaciones y en encuestas a la comunidad. Esta es la lista vigente:

CódigoCategoríaQué significaCómo se previene
A01:2025Control de acceso roto (Broken Access Control)Un usuario puede ver o hacer cosas que no le correspondenVerificar permisos en el servidor en cada solicitud y denegar por defecto
A02:2025Configuración de seguridad incorrecta (Security Misconfiguration)Contraseñas por defecto, funciones innecesarias activas, errores que muestran detalles internosConfiguración base endurecida, revisada y automatizada
A03:2025Fallas en la cadena de suministro de software (Software Supply Chain Failures)Librerías, plugins o herramientas de terceros vulnerables o comprometidosInventario de componentes, fuentes confiables y actualizaciones
A04:2025Fallas criptográficas (Cryptographic Failures)Datos sensibles sin cifrar o con algoritmos débilesHTTPS en todo el sitio, cifrado de datos sensibles y contraseñas guardadas con funciones de hash diseñadas para ello
A05:2025Inyección (Injection)Datos del usuario que el sistema termina interpretando como comandosConsultas parametrizadas y validación de entradas
A06:2025Diseño inseguro (Insecure Design)Fallas de lógica que vienen desde el diseño, no del códigoModelado de amenazas y casos de abuso al diseñar
A07:2025Fallas de autenticación (Authentication Failures)Inicios de sesión débiles, sin límite de intentos o sesiones mal gestionadasDoble factor, límites de intentos y sesiones que expiran
A08:2025Fallas de integridad de software o datos (Software or Data Integrity Failures)Actualizaciones o datos que se aceptan sin verificar su origenFirmas digitales y verificación de integridad
A09:2025Fallas en el registro y las alertas de seguridad (Security Logging & Alerting Failures)No queda rastro de lo que pasó o nadie se entera a tiempoRegistrar eventos clave y generar alertas que alguien revise
A10:2025Manejo incorrecto de condiciones excepcionales (Mishandling of Exceptional Conditions)Errores e imprevistos que dejan la aplicación en un estado inseguroManejo de errores que "falla de forma segura", sin exponer detalles

Qué cambió frente a la edición 2021

  • Nuevas: A03, que amplía la antigua categoría de componentes vulnerables y desactualizados a todo el ecosistema de software, y A10, sobre el manejo de condiciones excepcionales.
  • Fusionada: la falsificación de solicitudes del lado del servidor (SSRF) pasó a formar parte de A01.
  • Movimientos: la configuración incorrecta subió del quinto al segundo puesto; las fallas criptográficas bajaron del segundo al cuarto; la inyección, del tercero al quinto; el diseño inseguro, del cuarto al sexto.
  • Renombradas: A07 (antes "fallas de identificación y autenticación") y A09 (antes "fallas de registro y monitoreo").

1. ¿Qué categoría ocupa el primer lugar del OWASP Top 10 en la edición 2025?

  • Inyección
  • Control de acceso roto
  • Fallas en la cadena de suministro de software

A01:2025 es el control de acceso roto, que mantiene el primer lugar de 2021 y ahora incluye SSRF. La inyección bajó al quinto lugar y la cadena de suministro es la nueva A03.

Cuatro riesgos a fondo

Control de acceso roto (A01)

Una clienta de una tienda online entra a "Mis pedidos" y la dirección muestra /pedidos/1045. Si el servidor solo comprueba que ella inició sesión, pero no que el pedido 1045 sea suyo, otra persona con sesión iniciada podría ver datos que no le pertenecen. La protección no está en esconder el número, sino en que el servidor verifique en cada solicitud que ese usuario tiene permiso sobre ese recurso. Lo mismo vale para funciones de administrador: ocultar un botón en la pantalla no impide que alguien envíe la solicitud.

Inyección (A05)

La inyección ocurre cuando una aplicación mezcla datos del usuario con instrucciones para la base de datos u otro sistema, y estos terminan interpretando los datos como órdenes. La defensa principal es separar siempre datos e instrucciones con consultas parametrizadas: la instrucción se escribe fija, con marcadores, y los datos se pasan aparte. Así se ve una consulta segura en Python:

import sqlite3

conexion = sqlite3.connect("tienda.db")
correo = input("Correo del cliente: ")

# Correcto: la consulta es fija y el dato viaja aparte (marcador ?)
cursor = conexion.execute(
    "SELECT id, nombre FROM clientes WHERE correo = ?",
    (correo,)
)
print(cursor.fetchall())

La base de datos trata lo que escribió el usuario siempre como un dato, nunca como parte de la instrucción, sin importar qué contenga. Si estás aprendiendo SQL con Python, revisa la lección de bases de datos con Python y SQLite.

2. ¿Cuál es la defensa principal contra la inyección en consultas a una base de datos?

  • Ocultar los mensajes de error al usuario
  • Pedir al usuario que no escriba caracteres especiales
  • Usar consultas parametrizadas que separan los datos de la instrucción

Con consultas parametrizadas, el dato del usuario nunca forma parte de la instrucción. Ocultar errores ayuda (A02, A10), pero no corrige el problema de fondo, y pedir "por favor" no es un control.

Configuración de seguridad incorrecta (A02)

Subió al segundo lugar porque cada vez más de la seguridad depende de configurar bien: servidores, paneles, almacenamiento en la nube y cabeceras HTTP. Revisa que no queden cuentas con contraseñas por defecto, que los mensajes de error no muestren detalles técnicos internos, que no estén activas funciones de prueba y que el servidor envíe cabeceras de seguridad como estas:

Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: default-src 'self'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin

La primera obliga al navegador a usar siempre HTTPS con tu sitio; la segunda limita desde dónde se pueden cargar scripts y otros recursos; la tercera impide que el navegador "adivine" el tipo de un archivo; la cuarta controla qué información se envía al seguir enlaces. La política de contenido (CSP) debe ajustarse a cada sitio y probarse antes de aplicarla.

Cadena de suministro de software (A03)

Una aplicación moderna puede depender de cientos de librerías y plugins escritos por terceros. Si uno de ellos tiene una falla o es comprometido, tu aplicación hereda el problema. La defensa: mantener un inventario de componentes (a menudo llamado SBOM, lista de materiales del software), instalar solo desde fuentes oficiales, eliminar lo que no se usa, actualizar con regularidad y vigilar los avisos de seguridad de lo que usas.

Si tienes una tienda online o un sitio con gestor de contenidos

No necesitas programar para aplicar lo esencial. Esta lista cubre gran parte del Top 10 para sitios en plataformas como WordPress con WooCommerce o tiendas alojadas. Si estás montando tu tienda, complementa con la lección de ecommerce del curso de marketing digital:

Caso: revisión de seguridad de una tienda en Medellín

Sofía, dueña de una tienda online de accesoriosMedellín, Colombia · revisión contratada a una empresa especializada, con autorización por escrito

La revisión encontró 20 hallazgos: 1 crítico (un plugin de formularios desactualizado con una falla conocida, A03), 3 altos (dos cuentas de administrador sin doble factor y un panel de pruebas accesible, A07 y A02), 6 medios y 10 bajos. En 30 días, Sofía resolvió todos los críticos y altos, 4 medios y 3 bajos.

Hallazgos iniciales

Críticos1
Altos3
Medios6
Bajos10

Pendientes a los 30 días

Críticos0
Altos0
Medios2
Bajos7

Quedan 9 de 20 hallazgos, todos de severidad media o baja, con fecha de corrección asignada.

3. En el caso de Sofía, ¿qué porcentaje de los 20 hallazgos quedó resuelto a los 30 días?

  • 55%
  • 45%
  • 70%

Resolvió 1 + 3 + 4 + 3 = 11 hallazgos. 11 ÷ 20 = 55%. Quedan 9 (45%), pero ninguno crítico ni alto: priorizar por severidad es más importante que el porcentaje total.

Seguridad en todo el ciclo de desarrollo

Corregir una falla de diseño cuando la aplicación ya está en producción cuesta mucho más que evitarla en la pizarra. Por eso la seguridad se integra en cada etapa:

  1. DiseñoModelado de amenazasPreguntarse "¿qué podría salir mal?" y escribir casos de abuso junto a los casos de uso (A06).
  2. DesarrolloBuenas prácticas y revisión de códigoConsultas parametrizadas, validación en el servidor, manejo de errores seguro y revisión entre pares.
  3. PruebasHerramientas automáticasAnálisis estático del código (SAST), análisis de componentes de terceros (SCA) y pruebas dinámicas (DAST) en un entorno de pruebas.
  4. ProducciónMonitoreo y canal de reporteRegistros y alertas (A09), pruebas de penetración autorizadas y una política para que investigadores reporten fallas de forma responsable.

Errores comunes

Ocultar un botón de administrador y creer que eso protege la función.

Verifica el permiso en el servidor en cada solicitud.

Instalar plugins "por si acaso" y no actualizarlos.

Usa los mínimos, de fuentes confiables, y actualízalos.

Mostrar mensajes de error con detalles técnicos al visitante.

Muestra un mensaje genérico y guarda el detalle en el registro interno.

Dejar la seguridad para "una auditoría al final".

Intégrala desde el diseño y en cada entrega.

4. Un error inesperado en el proceso de pago hace que la aplicación muestre la ruta interna de los archivos del servidor y la versión de la base de datos. ¿Con qué categorías se relaciona más?

  • Solo con fallas criptográficas
  • Con el manejo incorrecto de condiciones excepcionales (A10) y la configuración incorrecta (A02)
  • Con fallas de autenticación (A07)

La aplicación no maneja de forma segura un imprevisto y, además, está configurada para mostrar detalles internos. La solución es un manejo de errores que falle de forma segura y mensajes genéricos al usuario.

Ejercicio práctico

Relaciona cada situación de un portal de clientes con su categoría del OWASP Top 10:2025 y propón una medida preventiva:

  1. El panel de administración sigue con el usuario y la contraseña que trae la plataforma al instalarse.
  2. El portal permite probar contraseñas sin límite de intentos y no ofrece doble factor.
  3. Un usuario con rol "vendedor" puede descargar el reporte de planillas, reservado a Recursos Humanos, si escribe la dirección directamente.
  4. Nadie se enteró durante tres semanas de que una cuenta de administrador iniciaba sesión de madrugada desde otro país.
  5. La aplicación usa una librería de generación de PDF con una vulnerabilidad publicada hace un año.
Ver solución
  1. A02 Configuración incorrecta: cambiar credenciales por defecto, crear cuentas individuales y revisar la configuración base.
  2. A07 Fallas de autenticación: limitar intentos, activar doble factor y bloquear contraseñas comunes o filtradas.
  3. A01 Control de acceso roto: verificar el rol en el servidor para cada reporte y denegar por defecto.
  4. A09 Fallas en el registro y las alertas: registrar inicios de sesión de administradores y alertar ante horarios o ubicaciones inusuales.
  5. A03 Fallas en la cadena de suministro: inventario de componentes, actualización de la librería y alertas de nuevas vulnerabilidades en las dependencias.

Resumen

  • La mayoría de las fallas web nacen de confiar en lo que envía el usuario: todo se valida en el servidor.
  • El OWASP Top 10:2025 lo encabeza el control de acceso roto, seguido de la configuración incorrecta y la nueva categoría de cadena de suministro.
  • Las consultas parametrizadas previenen la inyección; las cabeceras de seguridad y una configuración endurecida reducen A02.
  • En una tienda online: actualizaciones, cuentas con rol mínimo y doble factor, HTTPS, pasarela de pago, copias, WAF y alertas.
  • La seguridad se integra desde el diseño y en todo el ciclo de desarrollo, y solo se prueba con autorización.

En la próxima lección: Gestión de identidades y accesos: mínimo privilegio. Aprenderás a decidir quién accede a qué, a revisar permisos y a gestionar altas, cambios y bajas sin dejar puertas abiertas.

🎓 Guarda tu avance y obtén tu certificado gratis

Crea tu cuenta en 30 segundos, marca tus lecciones y descarga el certificado al terminar.

Inscribirme gratis