Веб-безопасность
Отлично!
Ты движешься ровно по плану, прям как надо для уверенного мидла ✅
Следующая приоритетная тема:
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, кеширование). Как выберешь?