1. Введение в Auth & Security
Что такое аутентификация?
Заголовок раздела «Что такое аутентификация?»Аутентификация (Authentication) — это процесс проверки личности пользователя: “Ты тот, кем себя называешь?”
Авторизация (Authorization) — это проверка прав: “Ты можешь это делать?”
Разница важна:
- Аутентификация: логин/пароль, токен, биометрия
- Авторизация: роли, права, разрешения
Почему безопасность критична?
Заголовок раздела «Почему безопасность критична?»Нарушения безопасности = катастрофа:
- Финансовые потери: штрафы GDPR до 4% от оборота компании
- Репутационный ущерб: пользователи уходят после утечки данных
- Юридическая ответственность: суды, иски, регуляторы
- Технический ущерб: потеря данных, заражение систем
Статистика 2024
Заголовок раздела «Статистика 2024»- 80% взломов связаны со слабыми или украденными паролями
- Средняя стоимость утечки данных: $4.45 млн (IBM, 2023)
- 43% атак нацелены на малый бизнес
- XSS уязвимости присутствуют в 40% веб-приложений
Основные угрозы
Заголовок раздела «Основные угрозы»1. Слабые пароли
Заголовок раздела «1. Слабые пароли»Пользователи используют “123456”, “password”, дни рождения. Решение: хэширование + требования к сложности.
2. Перехват сессий (Session Hijacking)
Заголовок раздела «2. Перехват сессий (Session Hijacking)»Злоумышленник крадёт cookie сессии и выдаёт себя за пользователя. Решение: HTTPS, HttpOnly, Secure флаги.
3. XSS (Cross-Site Scripting)
Заголовок раздела «3. XSS (Cross-Site Scripting)»Внедрение вредоносного JavaScript на страницу сайта. Решение: экранирование, CSP.
4. CSRF (Cross-Site Request Forgery)
Заголовок раздела «4. CSRF (Cross-Site Request Forgery)»Принуждение браузера пользователя выполнить нежелательные действия. Решение: CSRF токены, SameSite.
5. SQL Injection
Заголовок раздела «5. SQL Injection»Внедрение SQL-кода через пользовательский ввод. Решение: prepared statements, ORM.
6. Man-in-the-Middle (MITM)
Заголовок раздела «6. Man-in-the-Middle (MITM)»Перехват трафика между клиентом и сервером. Решение: HTTPS/TLS.
Стек аутентификации в 2024
Заголовок раздела «Стек аутентификации в 2024»Современный веб-проект использует:
Пользователь ↓ (HTTPS)Frontend (Next.js/React) ↓ (JWT / Session cookie)Backend API ↓ (Hashed password)DatabaseПопулярные инструменты
Заголовок раздела «Популярные инструменты»| Категория | Инструмент |
|---|---|
| Хэширование паролей | bcrypt, Argon2 |
| Сессии | express-session, Redis |
| JWT | jsonwebtoken, jose |
| OAuth | NextAuth.js, Passport.js |
| 2FA | speakeasy, otplib |
Принципы безопасной архитектуры
Заголовок раздела «Принципы безопасной архитектуры»Defense in Depth (Глубокая оборона)
Заголовок раздела «Defense in Depth (Глубокая оборона)»Несколько слоёв защиты: даже если один взломан — остальные держатся.
Layer 1: HTTPS (шифрование трафика)Layer 2: Валидация входных данныхLayer 3: Аутентификация пользователяLayer 4: Авторизация (RBAC/ABAC)Layer 5: Хэширование чувствительных данныхLayer 6: Мониторинг и аудитPrinciple of Least Privilege
Заголовок раздела «Principle of Least Privilege»Пользователь получает минимум прав, необходимых для работы.
// Плохо: даём все праваuser.role = 'admin';
// Хорошо: конкретные праваuser.permissions = ['read:articles', 'write:own-articles'];Fail Secure
Заголовок раздела «Fail Secure»При ошибке — запрещай доступ, не разрешай.
// Плохо: при ошибке пропускаемtry { checkAuth(token);} catch (e) { // пропускаем ошибку — опасно! next();}
// Хорошо: при ошибке блокируемtry { await checkAuth(token);} catch (e) { return res.status(401).json({ error: 'Unauthorized' });}Что изучим в этом разделе
Заголовок раздела «Что изучим в этом разделе»- Хэширование паролей — bcrypt, Argon2, salt
- Сессии и куки — механизм, флаги безопасности
- JWT — структура, создание, верификация
- JWT vs Sessions — когда что использовать
- OAuth 2.0 — flows, grant types
- OpenID Connect — поверх OAuth 2.0
- NextAuth.js — auth для Next.js приложений
- Passport.js — auth middleware для Express
- RBAC — ролевой контроль доступа
- ABAC — атрибутивный контроль доступа
- XSS защита — атаки и противодействие
- CSRF защита — атаки и противодействие
- HTTPS и Security Headers — конфигурация сервера
- Best Practices — финальный чеклист
Практические задания
Заголовок раздела «Практические задания»- Найди в публичном GitHub-репозитории хотя бы одну проблему безопасности (слабое хэширование, незащищённый роут)
- Проверь свой сайт на https://securityheaders.com
- Попробуй XSS на https://xss-game.appspot.com
Дополнительные ресурсы
Заголовок раздела «Дополнительные ресурсы»- OWASP Top 10 — топ уязвимостей веба
- MDN Web Security
- Auth0 Blog — статьи по аутентификации