Отлично!
Ты движешься ровно по плану, прям как надо для уверенного мидла ✅

Следующая приоритетная тема:

7. Веб-безопасность

Цель: понимать и объяснять на собеседовании:
  • основные угрозы для веб-приложений
  • как защищать данные пользователя и систему
  • что должен знать backend-разработчик уровня middle+

Раскрою тебе основу плюс сразу дам практические меры защиты и реальные примеры.

📦 Основные угрозы для веб-приложений

1. SQL Injection (SQLi)

Подставка вредоносного SQL-кода через вводимые данные.

❌ Пример уязвимого кода:

$sql = "SELECT * FROM users WHERE email = '$email'"; 

✅ Защита:

  • Только подготовленные выражения (prepared statements):
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email'); $stmt->execute(['email' => $email]); 

2. Cross-Site Scripting (XSS)

Внедрение вредоносного JS-кода на страницу.

❌ Уязвимый пример:

echo $_GET['message']; 

✅ Защита:

  • Экранирование вывода:
echo htmlspecialchars($_GET['message'], ENT_QUOTES, 'UTF-8'); 
  • CSP (Content Security Policy) заголовки

3. CSRF (Cross-Site Request Forgery)

Атака, заставляющая пользователя выполнить нежелательное действие (например, перевод денег).

✅ Защита:

  • CSRF-токены во всех формах и POST-запросах
  • Заголовок Referer / Origin
  • Проверка сессии пользователя

4. Insecure Direct Object Reference (IDOR)

Пользователь получает доступ к чужим данным, манипулируя ID в URL.

❌ Уязвимый пример:

GET /user/5 

✅ Защита:

  • Проверять права доступа к объекту:
if ($currentUser->id !== $requestedUserId) {    throw new AccessDeniedException(); } 

5. Brute force (перебор паролей)

✅ Защита:

  • Ограничение количества попыток входа
  • CAPTCHA
  • Блокировка по IP или по аккаунту
  • Уведомления о подозрительных попытках

🛡️ Базовые меры защиты для любого backend-разработчика

  • ✅ Использовать подготовленные SQL-запросы
  • ✅ Экранировать весь пользовательский вывод
  • ✅ Настроить CSRF-защиту
  • ✅ Ограничить доступ к объектам по авторизации
  • ✅ Валидировать все входящие данные (не только на фронте)
  • ✅ Шифровать пароли безопасными алгоритмами (bcrypt, argon2)
  • ✅ Использовать HTTPS
  • ✅ Ограничить размер загружаемых файлов и входящих данных
  • ✅ Настроить правильные заголовки безопасности (CSP, X-Frame-Options и др.)
  • ✅ Логировать подозрительные действия

🎯 Частые вопросы на собеседовании:

  • Как вы защищаете API?
  • Что такое XSS, и как вы с ним боретесь?
  • Как защититься от SQL-инъекций?
  • Как ограничить brute-force атаки?
  • Что такое CSRF, как его предотвратить?
  • Как правильно хранить пароли пользователей?

Если хочешь — можем теперь перейти к практике: я дам тебе кейсы, а ты скажешь, как бы ты закрыл уязвимость или спроектировал безопасную обработку.

Или пойдём к следующей теме — Сетевые основы (HTTP, TCP, DNS, кеширование). Как выберешь?