Skip to content
IRC-CodingIRC-Coding
OWASP Top 10InjectionXSSSecurityAplicaciones web

OWASP Top 10: Riesgos de Seguridad Web

OWASP Top 10 lista los 10 riesgos críticos: Injection, Broken Authentication, XSS, Security Misconfiguration y contramedidas.

S

schutzgeist

3 min read
OWASP Top 10: Riesgos de Seguridad Web

OWASP Top 10: Riesgos de seguridad en aplicaciones web

Este artículo es una explicación conceptual de los Riesgos de seguridad OWASP Top 10, incluidas preguntas de examen y etiquetas.

En pocas palabras

OWASP Top 10 es una lista regularmente actualizada de los diez riesgos de seguridad más críticos para aplicaciones web, publicada por la organización OWASP. Sirve como estándar reconocido en la industria para evaluar la seguridad.

Descripción técnica compacta

OWASP Top 10 es un estándar reconocido internacionalmente para evaluar la seguridad de aplicaciones web. Identifica las vulnerabilidades más frecuentes y graves basándose en datos reales de ataques y aplicaciones en uso.

Cada categoría incluye descripción, riesgos, causas y contramedidas. Los desarrolladores, responsables de seguridad y auditores utilizan la lista para evaluar y asegurar proyectos de software.

La versión actual (2021) introduce nuevas clasificaciones como Insecure Design o Software and Data Integrity Failures. La lista se considera lectura obligatoria para la conciencia de seguridad y el desarrollo seguro de software.

Puntos clave relevantes para exámenes

  • Se categorizan los 10 riesgos web más frecuentes
  • Actualizaciones regulares basadas en datos reales de ataques
  • Relevancia para certificaciones profesionales en desarrollo de software y arquitectura
  • Los conceptos de seguridad deben considerar OWASP Top 10
  • Base para auditorías y políticas de seguridad
  • Injection, XSS, errores de autenticación como amenazas principales
  • La prevención evita costos altos derivados de exploits
  • Obligación de documentación en auditorías y documentación de proyectos

Componentes principales (OWASP Top 10 2021)

  1. A01 – Broken Access Control: Control de acceso insuficiente
  2. A02 – Cryptographic Failures: Cifrado débil
  3. A03 – Injection: SQL, OS, LDAP Injection
  4. A04 – Insecure Design: Arquitectura de seguridad deficiente
  5. A05 – Security Misconfiguration: Configuración incorrecta
  6. A06 – Vulnerable Components: Bibliotecas vulnerables
  7. A07 – Identification & Authentication Failures: Problemas de autenticación
  8. A08 – Software and Data Integrity Failures: Problemas de integridad
  9. A09 – Security Logging and Monitoring Failures: Logging insuficiente
  10. A10 – Server-Side Request Forgery (SSRF): Falsificación de solicitudes del lado del servidor

Ejemplos prácticos

SQL Injection (A03)

// Código vulnerable
String query = "SELECT * FROM benutzer WHERE name = '" + userName + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

// Alternativa segura con Prepared Statements
String query = "SELECT * FROM benutzer WHERE name = ?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, userName);
ResultSet rs = stmt.executeQuery();

Cross-Site Scripting (A07)

// Código vulnerable
function zeigeNachricht(nachricht) {
    document.getElementById('output').innerHTML = nachricht;
}

// Alternativa segura
function zeigeNachricht(nachricht) {
    document.getElementById('output').textContent = nachricht;
}

// O con escapado
function escapeHtml(text) {
    const div = document.createElement('div');
    div.textContent = text;
    return div.innerHTML;
}

Broken Access Control (A01)

// Código vulnerable
@GetMapping("/admin/users")
public List<User> getUsers(HttpServletRequest request) {
    // Sin validar si el usuario es administrador
    return userService.getAllUsers();
}

// Alternativa segura
@GetMapping("/admin/users")
public List<User> getUsers(HttpServletRequest request) {
    User currentUser = getCurrentUser(request);
    if (!currentUser.hasRole("ADMIN")) {
        throw new UnauthorizedException("Admin-Rechte erforderlich");
    }
    return userService.getAllUsers();
}

Contramedidas

Principios generales de seguridad

  • Defense in Depth: Múltiples capas de seguridad
  • Least Privilege: Otorgar permisos mínimos
  • Security by Design: Planificar la seguridad desde el inicio
  • Regular Updates: Mantener sistemas y bibliotecas actualizados

Medidas específicas

  • Input Validation: Validar todas las entradas del usuario
  • Output Encoding: Escapar correctamente las salidas
  • Parameterized Queries: Prevenir SQL Injection
  • Strong Authentication: Autenticación multifactor
  • HTTPS: Forzar comunicación cifrada
  • Security Headers: Utilizar CSP, HSTS, X-Frame-Options

Ventajas y desventajas

Ventajas de OWASP Top 10

  • Concienciación: Sensibiliza sobre riesgos de seguridad
  • Estandarización: Lenguaje común para seguridad
  • Priorización: Enfoque en los riesgos más críticos
  • Orientación práctica: Basado en datos reales de ataques

Desventajas

  • Completitud: No cubre todos los riesgos posibles
  • Falsa sensación de seguridad: Enfocarse solo en Top 10 puede ignorar otros riesgos
  • Desactualización: La lista puede quedar obsoleta rápidamente
  • Complejidad: La implementación requiere experiencia técnica

Preguntas frecuentes de examen

  1. ¿Qué es OWASP y por qué es importante la lista Top 10? OWASP es una organización que se dedica a la seguridad de aplicaciones. La lista Top 10 prioriza los riesgos más críticos.

  2. ¡Explique SQL Injection y cómo prevenirla! SQL Injection es la inyección de código SQL a través de entradas del usuario. Se previene mediante Prepared Statements e Input Validation.

  3. ¿Cuál es la diferencia entre XSS y CSRF? XSS (Cross-Site Scripting) ejecuta código en el navegador de la víctima, mientras que CSRF (Cross-Site Request Forgery) ejecuta acciones en nombre de la víctima.

  4. ¿Por qué es importante Security by Design? Integrar la seguridad desde el inicio es más efectivo y económico que asegurar la aplicación después de su desarrollo.

Fuentes principales

  1. https://owasp.org/www-project-top-ten/
  2. https://cheatsheetseries.owasp.org/
  3. https://portswigger.net/web-security
Volver al blog
Share:

Entradas relacionadas