01 / ВСТУП
Доповідь · Веб-безпека

Методи
аутентифікації
користувача

Від пароля в базі до passkey у Secure Enclave: як веб-застосунок відповідає на питання «хто ти?» — і чому більшість відповідей уже застаріли.

14 слайдів Фактори · Сесії · Федерація · Passwordless
Статус доступу
Автентифіковано
02 / ОСНОВИ
Розмежування понять

Аутентифікація ≠ авторизація

AuthN · перша

Аутентифікація — «Хто ти?»

Підтвердження особи. Виконується один раз на вході, результат — ідентичність користувача.

  • Перевіряє: паролі, токени, ключі, біометрію
  • Результат: user_id
  • Помилка: 401 Unauthorized
AuthZ · на кожен запит

Авторизація — «Що тобі можна?»

Перевірка прав на конкретний ресурс. Виконується щоразу, для кожного об'єкта окремо.

  • Перевіряє: ролі, політики, власність (RBAC / ABAC / ReBAC)
  • Результат: дозвіл або відмова
  • Помилка: 403 Forbidden
Аналогія: паспорт на рецепції готелю — це аутентифікація. Ключ-картка саме від номера 305 — це авторизація.
03 / ФАКТОРИ
Класифікація

Чотири категорії доказів

Knowledge

Щось, що ти знаєш

Пароль, PIN, графічний ключ, секретне питання.

  • Найдешевше в реалізації
  • Найлегше вкрасти
Possession

Щось, що ти маєш

Телефон, апаратний ключ, смарт-картка, сертифікат.

  • Потребує фізичного доступу
  • Можна загубити
Inherence

Щось, чим ти є

Відбиток, обличчя, райдужка, голос.

  • Зручно для користувача
  • Не можна «змінити пароль»
Context

Де і як ти дієш

IP, геолокація, відбиток пристрою, поведінка.

  • Працює як фонова оцінка ризику
  • Самостійно недостатній
Справжня двофакторність — це фактори з різних категорій. Пароль + секретне питання — це один фактор двічі.
04 / ПАРОЛІ
Фактор знання

Пароль: як зберігати, щоб не зашкодити

Обов'язково

Повільний хеш із сіллю

  • Argon2id — рекомендація OWASP за замовчуванням
  • bcrypt (cost ≥ 12) або scrypt — прийнятні альтернативи
  • Сіль — унікальна на кожен запис, генерується CSPRNG
  • Порівняння — тільки constant-time
Ніколи

Що ламає систему

  • MD5, SHA-1, SHA-256 без солі — підбираються мільярдами/сек
  • Зберігання у відкритому вигляді або з оборотним шифруванням
  • Обмеження довжини до 12–16 символів
  • Примусова ротація кожні 30 днів — веде до Pass1!, Pass2!
// Node.js — реєстрація
import argon2 from 'argon2';

const hash = await argon2.hash(password, {
  type:        argon2.argon2id,
  memoryCost:  19456,  // 19 MiB
  timeCost:    2,
  parallelism: 1
});

// Вхід
const ok = await argon2.verify(hash, password);
Перевіряйте пароль за списком витоків (Have I Been Pwned k-anonymity API) замість вимог «одна велика літера і спецсимвол».
05 / ВОЛОДІННЯ
Фактор володіння

Другий фактор: від SMS до YubiKey

Слабкий

SMS / Email OTP

Одноразовий код каналом зв'язку.

  • Вразливий до SIM-swap і перехоплення SS7
  • Не захищає від фішингу
  • Виправданий лише як запасний варіант
Середній

TOTP / HOTP

Код із застосунку на основі спільного секрету й часу (RFC 6238).

  • Працює офлайн, безкоштовно
  • Секрет копіюється при компрометації сервера
  • Код можна виманити фішингом
Середній

Push-підтвердження

Запит у довіреному застосунку: «Підтвердити вхід?»

  • Зручно, показує контекст входу
  • Ризик MFA fatigue — спам запитами
  • Лікується number matching
Найсильніший

FIDO2 / U2F ключі

Апаратний токен (YubiKey, Titan) із криптопарою.

  • Прив'язка до домену — фішинг неможливий
  • Секрет не залишає пристрій
Enterprise

Смарт-картки, X.509

Клієнтський сертифікат, часто на фізичній картці.

  • Банки, держсектор, критична інфраструктура
  • Складна інфраструктура PKI
Резерв

Recovery-коди

Список одноразових кодів на випадок втрати пристрою.

  • Обов'язкові до будь-якого MFA
  • Зберігаються хешованими, як паролі
06 / БІОМЕТРІЯ
Фактор властивості

Біометрія у вебі працює не так, як здається

Правильна модель

Дані не залишають пристрій

Браузер через WebAuthn звертається до платформного автентифікатора. Face ID чи відбиток лише розблоковують локальний приватний ключ — на сервер летить підпис, а не біометрія.

  • Сервер ніколи не бачить відбитка
  • Витік бази не компрометує біометрію
Обмеження

Чого біометрія не вміє

  • Її не можна відкликати чи змінити після витоку
  • Хибні спрацювання: FAR / FRR завжди компроміс
  • Потребує liveness detection проти фото й дипфейків
  • Підпадає під GDPR як особливі категорії даних
  • Завантаження селфі на сервер для «розпізнавання» — антипатерн
Біометрія у вебі — це спосіб розблокувати ключ, а не окремий канал передачі даних на сервер.
07 / СЕСІЇ
Після успішного входу

Сесійні cookie проти JWT

КритерійSession cookieJWT (Bearer)
Де станНа сервері (Redis, БД); клієнт має лише IDУ самому токені, підписаний
ВідкликанняМиттєве — видалили записСкладне — потрібен denylist або короткий TTL
МасштабуванняПотрібне спільне сховищеStateless, зручно для мікросервісів
Розмір на запитДесятки байтСотні байт — на кожному запиті
Головний ризикCSRF — лікується SameSite=Lax/Strict + токенXSS, якщо зберігати в localStorage
Термін життяДовгий, продовжується активністюAccess 5–15 хв + refresh-токен із ротацією
Практичний компроміс для SPA: access-токен у пам'яті, refresh-токен у HttpOnly + Secure + SameSite cookie. localStorage для токенів — не використовувати.
08 / СХЕМИ
Транспортний рівень

HTTP-схеми та машинна аутентифікація

МеханізмЯк працюєДе доречно
Basic AuthAuthorization: Basic base64(login:pass)Внутрішні сервіси, тільки поверх HTTPS
Digest AuthХеш-челендж замість передачі пароляПрактично не використовується
Bearer tokenAuthorization: Bearer <token>Стандарт для REST API та SPA
API keyСтатичний ключ у заголовкуСервіс-до-сервісу; не для користувачів
HMAC-підписПідпис методу, тіла й часу секретом (AWS SigV4)Платіжні API, захист від replay
mTLSКлієнт і сервер пред'являють сертифікатиБанки, IoT, service mesh
Kerberos / SPNEGOКвитки з домен-контролераПрозорий вхід у корпоративній мережі
09 / ФЕДЕРАЦІЯ
Делегована аутентифікація

OAuth 2.0, OIDC і SAML

Часта помилка

OAuth 2.0 — це авторизація

Протокол делегування доступу до ресурсів. Він відповідає на питання «що застосунку можна робити від мого імені», а не «хто я».

  • Видає access-токен для API
  • Сам по собі не підтверджує особу
Сучасний стандарт

OpenID Connect

Тонкий шар поверх OAuth 2.0, який додає саме аутентифікацію: id_token у форматі JWT із claims про користувача.

  • Основа для «Увійти через Google/Apple/GitHub»
  • Discovery через /.well-known
Enterprise

SAML 2.0 · LDAP · AD

XML-based SSO — досі домінує у великих компаніях і держсекторі. LDAP/Active Directory — перевірка облікових даних у каталозі.

  • SCIM — автоматичне провізіонування акаунтів
Для SPA та мобільних застосунків — тільки Authorization Code + PKCE. Implicit flow офіційно застарілий і не використовується.
10 / PASSKEYS
Безпарольний вхід

WebAuthn: як це працює

01

Сервер надсилає випадковий challenge і свій домен (rpId)

02

Браузер передає запит автентифікатору — телефону, ключу, Secure Enclave

03

Користувач розблоковує пристрій: відбиток, обличчя або PIN

04

Пристрій підписує challenge приватним ключем, який його не покидає

05

Сервер перевіряє підпис збереженим публічним ключем

Переваги
  • Ключ прив'язаний до домену — фішинг технічно неможливий
  • На сервері немає секрету, який можна вкрасти
  • Passkeys синхронізуються між пристроями через iCloud / Google
  • Вхід у два кліки — конверсія зростає
Що врахувати
  • Потрібен запасний метод для нових і чужих пристроїв
  • Складніший сценарій відновлення доступу
  • Синхронізовані passkeys залежать від безпеки хмарного акаунта
11 / БЕЗ ПАРОЛЯ
Інші безпарольні сценарії

Magic link, OTP та їхня ціна

Email

Magic link

Одноразове посилання на пошту замість пароля.

  • Нема чого вкрасти з бази
  • Безпека дорівнює безпеці поштової скриньки
  • Ризик: сканери посилань у корпоративній пошті «клікають» першими
Email / SMS

OTP як єдиний фактор

Код на пошту або телефон замість пароля.

  • Звично для користувачів
  • Затримки доставки псують UX
  • Вартість SMS і ризик SMS-pumping атак
Гібрид

Прогресивна міграція

Реалістичний шлях для наявного продукту.

  • Passkey пропонується як апгрейд після звичайного входу
  • Пароль лишається запасним каналом
  • Метрика успіху — частка входів без пароля
12 / СТРАТЕГІЇ
Композиція методів

MFA, step-up і адаптивна перевірка

Базове

MFA

Два або більше факторів із різних категорій на вході. Знижує ризик захоплення акаунта на порядки.

Точкове

Step-up authentication

Додаткове підтвердження лише перед критичною дією: зміна пароля чи email, платіж, видалення акаунта, доступ адміністратора.

Розумне

Адаптивна / risk-based

Другий фактор вимагається тільки при аномалії: новий пристрій, інша країна, нетипова поведінка, IP із поганою репутацією.

МетодСтійкість до фішингуЗручністьВартість
Тільки парольНемаєСередняМінімальна
Пароль + SMSНизькаСередняSMS-трафік
Пароль + TOTPЧастковаСередняМінімальна
Passkey / FIDO2ПовнаВисокаРозробка
13 / ПРАКТИКА
Чек-лист впровадження

Що зробити обов'язково

Захист входу
  • Rate limiting за IP та за акаунтом, експоненційні затримки
  • Захист від credential stuffing і password spraying
  • Однакова відповідь на неіснуючий логін і невірний пароль — щоб не розкривати список акаунтів
  • CAPTCHA або proof-of-work після кількох невдач
Життєвий цикл сесії
  • Регенерація ID сесії одразу після входу — проти session fixation
  • Ротація refresh-токенів із виявленням повторного використання
  • Реальна інвалідація на сервері при logout
  • Розрив усіх сесій при зміні пароля
  • Список активних пристроїв у профілі користувача
Транспорт і зберігання
  • HTTPS скрізь, HSTS, cookie з Secure + HttpOnly + SameSite
  • Токени — ніколи в URL, логах чи localStorage
  • Секрети — у сховищі ключів, не в репозиторії
Відновлення та аудит
  • Скидання пароля — одноразовий токен із коротким TTL
  • Лист-сповіщення про вхід із нового пристрою
  • Журнал подій аутентифікації для розслідувань
  • Відновлення доступу не має бути слабшим за сам вхід
14 / ПІДСУМОК
Висновки

Три тези, які варто забрати з собою

Теза 1

Пароль — не точка, а спадок

Він залишиться ще надовго, але має бути правильно захищений і поступово ставати запасним, а не основним методом.

Теза 2

Не всі MFA рівні

SMS краще за нічого, TOTP краще за SMS, але тільки криптографічна прив'язка до домену робить фішинг неможливим.

Теза 3

Вхід — це лише початок

Broken Access Control досі №1 в OWASP Top 10. Аутентифікація одна на вхід, авторизація — на кожен ресурс окремо.

Пріоритет впровадження

Passkeys / FIDO2 TOTP Push SMS

Запитання? Далі можна поглибитись у будь-який блок: реалізація WebAuthn, налаштування OIDC-провайдера або аудит наявної системи входу.
← → або пробіл · F — повний екран
1 / 14