Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Seguridad WebNivel: Intermedio16 min de lección

Seguridad Web: Guía Definitiva de Vulnerabilidades OWASP

Cómo defender tus aplicaciones contra SQL Injection, Cross-Site Scripting (XSS), CSRF y fallas de control de acceso en producción.

Seguridad Web: Guía Definitiva de Vulnerabilidades OWASP
AROS STUDENT
E
Equipo de Ciberseguridad ArostikEspecialistas en Pentesting y Seguridad Web · Actualizado el 25 sep 2026
¿Qué es OWASP y por qué Deberías Seguir sus Guías?

OWASP (Open Web Application Security Project) es una fundación global sin fines de lucro dedicada a mejorar la seguridad del software en todo el mundo. Su publicación más respetada es el **OWASP Top 10**: un informe de consenso internacional elaborado por los mejores expertos en seguridad que describe las 10 vulnerabilidades más críticas y frecuentes que afectan a las aplicaciones web modernas. La inmensa mayoría de las brechas de seguridad millonarias que aparecen en las noticias no son causadas por sofisticados ataques de agencias de inteligencia, sino por errores básicos de programación como no sanitizar una entrada de texto, permitir la ejecución de scripts no autorizados o confiar ciegamente en los datos que envía el navegador del usuario.

¿Cuáles son las Tres Vulnerabilidades Históricas más Peligrosas?
Ventajas y Beneficios:
  • ✓Inyección SQL (SQLi): Ocurre cuando un atacante introduce código SQL malicioso en un formulario y el servidor lo ejecuta directamente, permitiéndole robar o borrar la base de datos completa.
  • ✓Cross-Site Scripting (XSS): El atacante logra inyectar código JavaScript malicioso en una página web vista por otros usuarios, robando sus cookies de sesión y contraseñas.
  • ✓Fallas en el Control de Acceso (Broken Access Control / IDOR): Ocurre cuando el servidor no valida si el usuario logueado realmente tiene permiso para ver el registro `/factura/105` del vecino.
Problemas que resuelve:
  • •Protege la información confidencial (tarjetas de crédito, contraseñas, historiales médicos) de tus usuarios.
  • •Evita multas regulatorias devastadoras (como las impuestas por GDPR o normativas bancarias).
  • •Mantiene la reputación comercial de la empresa evitando el secuestro de cuentas de usuarios.
El Cheque en Blanco, el Ladrón Disfrazado y la Puerta con Cerradura Falsa

- **SQL Injection es un Cheque Alterado**: Le entregas un cheque al banco que dice: *'Páguese a Juan 100 dólares'*, pero el ladrón escribe al lado: *'... y además transfiera todos los ahorros del banco a mi cuenta personal'*. Si el cajero es ingenuo y lee toda la frase sin verificar, ejecuta la orden del ladrón. - **XSS es un Micrófono Oculto en el Salón**: Un atacante pega un micrófono espía con cinta adhesiva debajo de la mesa de conferencias. Cuando el Director General se sienta a hablar de secretos comerciales, el micrófono transmite todo en directo al atacante. - **IDOR (Control de Acceso Roto) es un Casillero de Gimnasio sin Llave**: En el gimnasio te asignan el casillero #12. Pero tú caminas por el pasillo, abres el casillero #13 y el gimnasio te permite sacar la billetera de otra persona sin pedirte identificación.

Conexión con la Tecnología:La regla de oro de la ciberseguridad es: **'Nunca confíes en los datos del cliente (Never Trust User Input)'**. Toda entrada debe ser validada, sanitizada y autenticada en el servidor backend.

Explicación Paso a Paso del Tema

1

Cómo Prevenir Inyecciones SQL con Consultas Parametrizadas

Nunca jamás concatenes cadenas de texto para armar sentencias SQL.

Utiliza siempre sentencias preparadas (Prepared Statements) con marcadores de posición (`$1`, `?`).

Comando de Terminal / Código
// CÓDIGO VULNERABLE (¡PELIGRO DE INYECCIÓN SQL!):
// const query = `SELECT * FROM users WHERE email = '${req.body.email}'`;

// CÓDIGO SEGURO Y BLINDADO (Consultas Parametrizadas):
const query = 'SELECT id, email, role FROM users WHERE email = $1 AND active = true';
const values = [req.body.email];
const result = await db.query(query, values);
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
$1Marcador de PosiciónIndica al motor SQL que trate el valor como un dato crudo literal, nunca como comando ejecutable.
valuesArreglo SeguroPasa los datos del usuario en un canal independiente del comando SQL.
Consejo Profesional:

Los ORMs modernos como Prisma o Hibernate utilizan parámetros de forma nativa por debajo, protegiéndote automáticamente.

2

Cómo Prevenir Cross-Site Scripting (XSS)

XSS ocurre cuando imprimes texto de usuarios directamente en el DOM HTML sin escapar caracteres especiales como `<script>` o `onerror`.

Frameworks modernos como React escapan automáticamente las cadenas de texto (`{user.comment}`). Si usas HTML crudo, sanitiza siempre con librerías como DOMPurify.

Comando de Terminal / Código
// En el frontend, sanitizar antes de renderizar HTML dinámico:
import DOMPurify from 'dompurify';

const rawHtml = userGeneratedContent;
const cleanHtml = DOMPurify.sanitize(rawHtml);

// Ahora es seguro usar cleanHtml sin riesgo de ejecución de JavaScript malicioso
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
DOMPurify.sanitizeFunciónElimina etiquetas <script>, eventos inline (onload, onerror) y protocolos peligrosos como javascript:.
Error Común a Evitar:

Guardar tokens JWT de sesión en `localStorage`: cualquier vulnerabilidad XSS en tu sitio permitirá que el script malicioso robe el token con `localStorage.getItem('token')`. Usa siempre cookies `HttpOnly`.

3

Configurar Cabeceras de Seguridad HTTP Esenciales

Utiliza librerías como `helmet` en Node.js o directivas de Nginx para enviar cabeceras que blindan el navegador del cliente.

La cabecera **Content Security Policy (CSP)** restringe qué scripts y orígenes pueden ejecutarse en la web.

Comando de Terminal / Código
import helmet from 'helmet';
import express from 'express';

const app = express();

// Activa automáticamente 15 cabeceras de seguridad HTTP esenciales
app.use(helmet());
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
helmet()MiddlewareInyecta X-Content-Type-Options, X-Frame-Options (anti-clickjacking), HSTS y Content-Security-Policy.
Consejo Profesional:

Configura `X-Frame-Options: DENY` para evitar que atacantes incrusten tu sitio bancario dentro de un iframe invisible para engañar al usuario (Clickjacking).

Casos Prácticos Reales en Producción

Situaciones de ingeniería reales sin mención de presupuestos ficticios.

1El Robo de Cuentas por IDOR en un Portal de Salud

Escenario Real:

Una aplicación médica permitía descargar radiografías mediante la URL `/api/paciente/7504/estudios.pdf`. Un usuario cambió el número a `7505` en la barra de direcciones y pudo descargar el historial médico confidencial de otra persona.

Solución de Ingeniería Aplicada:

Se implementó una validación estricta de autorización en el controlador: el backend ahora verifica que el `req.user.id` del token JWT coincida obligatoriamente con el paciente solicitado antes de leer el archivo.

Fichas Nemotécnicas de Conceptos Clave

Glosario rápido para recordar los términos fundamentales de la lección.

SQL Injection (SQLi)

Vulnerabilidad donde comandos SQL maliciosos son inyectados en campos de entrada y ejecutados por la base de datos.

Cross-Site Scripting (XSS)

Falla de seguridad que permite a un atacante inyectar scripts del lado del cliente en páginas web vistas por otros usuarios.

Content Security Policy (CSP)

Cabecera HTTP que permite a los propietarios de un sitio web declarar qué fuentes de scripts e imágenes tienen permiso de ejecutarse.

Autoevaluación Rápida3 preguntas

Seguridad Web: Guía Definitiva de Vulnerabilidades OWASP

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Cuál es la técnica universalmente recomendada para prevenir ataques de Inyección SQL en aplicaciones web?

2

¿Por qué almacenar tokens JWT de sesión en 'localStorage' es un riesgo de seguridad frente a ataques XSS?

3

¿Qué es la vulnerabilidad conocida como IDOR (Insecure Direct Object References)?

Preguntas Frecuentes (FAQ)

¿Qué es CSRF (Cross-Site Request Forgery) y cómo se previene?

CSRF engaña al navegador de un usuario autenticado para que ejecute una acción involuntaria en un sitio web de confianza (ej. transferir dinero al visitar una web maliciosa). Se previene utilizando tokens CSRF criptográficos únicos por formulario y configurando la directiva `SameSite=Strict` o `Lax` en las cookies de sesión.

¿Un WAF (Web Application Firewall) elimina la necesidad de escribir código seguro?

No. Un WAF (como Cloudflare o AWS WAF) es una excelente capa de defensa en profundidad para bloquear patrones de ataque conocidos en el borde perimetral, pero nunca reemplaza las buenas prácticas de validación y control de acceso en el código fuente de tu aplicación.

Temas relacionados:#Seguridad#OWASP#XSS#SQLi#Ciberseguridad#Web