Actividad: Vulnerabilidades de Seguridad Web - XSS y SQL Injection
1. ¿Qué es XSS (Cross-Site Scripting)?
XSS es una vulnerabilidad de seguridad que permite a un atacante inyectar scripts maliciosos en sitios web
que otros usuarios visitan. Estos scripts se ejecutan en el navegador de la víctima y pueden robar cookies,
credenciales, sesiones, redirigir a sitios maliciosos, entre otros.
Tipos de XSS:
- Reflejado: El script se inyecta mediante una URL o formulario y se ejecuta inmediatamente.
- Persistente: El script se guarda en la base de datos del servidor (por ejemplo, en un comentario) y se
ejecuta cada vez que un usuario lo carga.
- DOM-based: El ataque ocurre mediante la manipulación del DOM del navegador, sin interacción directa
con el servidor.
Ejemplo básico:
<script>alert('XSS')</script>
2. ¿Qué es SQL Injection (Inyección de SQL)?
SQL Injection es una técnica de ataque donde se insertan comandos SQL maliciosos en formularios o URLs
para manipular bases de datos. Puede usarse para acceder a información sensible, modificar o eliminar
datos, o incluso tomar control del servidor.
Cómo ocurre:
Cuando una aplicación no valida correctamente los datos que recibe, un atacante puede insertar código SQL
que se ejecuta directamente en la base de datos.
Ejemplo clásico:
' OR '1'='1
Este valor puede engañar a un sistema de login si la consulta no está protegida:
SELECT * FROM usuarios WHERE usuario = '' OR '1'='1' AND clave = ''
3. Consecuencias comunes:
- Robo de identidad
- Pérdida de datos
- Acceso no autorizado
- Daño a la reputación del sitio
- Multas legales si se viola la privacidad del usuario
4. Buenas prácticas para prevenir:
Para XSS:
- Escapar o codificar los datos al mostrarlos en HTML
- Usar políticas de seguridad como Content Security Policy (CSP)
- Validar y sanear entradas del usuario
Para SQL Injection:
- Usar sentencias preparadas (prepared statements)
- Nunca concatenar directamente valores del usuario en consultas SQL
- Validar y sanitizar entradas