Testing de Seguridad para Ingenieros QA

El testing de seguridad no es solo para pentesters. QA encuentra funcionalidades de seguridad diariamente: formularios de login, campos de entrada, endpoints API y cargas de archivos. Entender vulnerabilidades comunes te hace un tester más efectivo.

OWASP Top 10

RiesgoEnfoque de Testing QA
Inyección (SQL, XSS)Probar campos con caracteres especiales
Auth rotoProbar flujos de auth exhaustivamente
Exposición de datos sensiblesVerificar HTTPS, headers, almacenamiento
Control de acceso rotoProbar acceso basado en roles
Mala configuración de seguridadVerificar páginas de error, headers
XSSProbar todos los inputs de usuario
CSRFVerificar tokens CSRF

Testing de XSS

Payloads Básicos

Prueba en cada campo de entrada, búsqueda, parámetro URL y campo de perfil:

<script>alert('XSS')</script>
"><script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>

Dónde Probar

  • Barras de búsqueda, campos de comentarios, campos de perfil, parámetros URL, nombres de archivos subidos, mensajes de error

Testing de CSRF

  1. Encuentra una acción que cambia estado (cambiar contraseña, actualizar perfil)
  2. Inspecciona el formulario — busca campo CSRF token
  3. Envía normalmente — debe funcionar
  4. Elimina o modifica el token — la solicitud debe rechazarse
  5. Repite desde otro origen — debe rechazarse

Testing de Headers de Seguridad

curl -I https://example.com
HeaderValor EsperadoPropósito
Strict-Transport-Securitymax-age=31536000Forzar HTTPS
X-Content-Type-OptionsnosniffPrevenir MIME sniffing
X-Frame-OptionsDENYPrevenir clickjacking
Content-Security-PolicyPolítica restrictivaPrevenir XSS

Ejercicio: Auditoría de Seguridad Web

Parte 1: Testing XSS

UbicaciónPayload¿Se ejecutó?¿Vulnerable?
Búsqueda<script>alert(1)</script>
Nombre de perfil<img src=x onerror=alert(1)>
Comentarios<svg onload=alert(1)>
Parámetro URL?q="><script>alert(1)</script>

Parte 2: Testing CSRF

PruebaEsperadoResultado
Formulario tiene token CSRFToken presente
Envío con token válidoÉxito
Envío sin tokenRechazo (403)
Envío con token modificadoRechazo

Parte 3: Security Headers

Header¿Presente?Valor¿Correcto?
Strict-Transport-Security
X-Content-Type-Options
Content-Security-Policy

Parte 4: Seguridad de Autenticación

PruebaEsperadoResultado
Login con payload SQL injectionLogin falla normalmente
Error de login no revela si email existeMensaje genérico
Cookie de sesión tiene HttpOnlyNo accesible vía JS
Cookie de sesión tiene SecureSolo por HTTPS
Solución: Hallazgos Comunes de Seguridad

Hallazgo 1: XSS reflejado en búsqueda. Input sin encoding. Corrección: HTML-encode todo input de usuario.

Hallazgo 2: Sin CSRF token en actualización de perfil. Corrección: Agregar CSRF token a todos los formularios.

Hallazgo 3: Headers de seguridad faltantes. Sin CSP ni HSTS. Corrección: Agregar headers a todas las respuestas.

Hallazgo 4: Cookie de sesión sin HttpOnly. Accesible vía document.cookie. Corrección: Agregar flag HttpOnly.

Hallazgo 5: Mensajes de error verbosos. Errores SQL mostrados en login. Corrección: Mensajes genéricos, detalles solo en logs del servidor.

Herramientas de Testing de Seguridad para QA

HerramientaPropósitoComplejidad
DevTools del navegadorInspección de headers, cookiesBaja
OWASP ZAPScanner automatizadoMedia
SecurityHeaders.comVerificación rápida de headersBaja
Mozilla ObservatoryEscaneo de seguridad completoBaja

Puntos Clave

  • QA puede y debe realizar testing básico de seguridad en cada funcionalidad
  • Prueba todos los inputs para XSS — búsquedas, perfiles, comentarios, parámetros URL
  • Verifica protección CSRF en cada acción que cambia estado
  • Revisa security headers en cada deployment
  • Las cookies de sesión deben tener HttpOnly y Secure
  • Usa OWASP Top 10 como checklist para planificación de testing de seguridad