← Ко всем записям

Безопасность

Pre-flight чек-лист: от PoC к усилению MVP

16 мин

Полный список усиления Auth Fly, открыто — что уже сильно в PoC и какие четыре стадии правок выводят проект от PoC к production-формату MVP.

Безопасность — та часть Auth Fly, в которой мы не хотим никого удивлять. Ниже — весь чек-лист, разбитый по стадиям, с честно записанными сильными местами рядом с тем, что ещё предстоит сделать.

Что уже сильно

  • SAML ACS берётся из конфига SP, никогда — из AuthnRequest. Закрывает подмену ACS.
  • OIDC redirect_uri валидируется точным сравнением по allowlist на каждого клиента.
  • Authorization code — одноразовые, ограничены TTL, сравниваются через hmac.Equal.
  • Сессионные cookie подписаны HMAC-SHA256, HttpOnly, Secure.
  • Cache-Control: no-store на token endpoint.
  • Hosted-UI отдаёт статику локально; зависимостей от CDN нет.
  • html/template и templ автоматически экранируют поля, рисуемые от пользователя.
  • URL возврата после логаута валидируются по allowlist origin.

Стадия 1 — критическое (неделя 1)

  • Проверять iss и aud в Hanko-JWT после проверки подписи.
  • Фиксировать alg JWT на RS256 в верификаторе; никогда не доверять значению из заголовка.
  • Перестать принимать bearer-токены из query-параметра ?token=.
  • Отказывать в старте, когда session_key — placeholder или короче 32 байт.
  • Конфигурировать http.Server с явными ReadTimeout, WriteTimeout и IdleTimeout.
  • Создавать файл приватного ключа IdP с режимом 0600.
  • Запускать контейнер не от root.

Стадия 2 — усиление протоколов (недели 2–3)

  • PKCE: хранить code_challenge + метод, проверять code_verifier, анонсировать в Discovery.
  • Добавить at_hash в id_token, чтобы привязать его к access token.
  • Проверять iss в access token до того, как принимать его в работу.
  • Валидировать IssueInstant и (когда есть) Destination в SAML AuthnRequest.
  • Опционально проверять подписанные AuthnRequest для SP, которые это включают.
  • Запустить горутину очистки code-store; ограничить рост памяти.
  • Валидировать запрашиваемые OIDC-scopes; отклонять всё, что вне поддерживаемого набора.

Стадия 3 — web-безопасность (недели 3–4)

  • Middleware security headers: CSP, X-Frame-Options DENY, X-Content-Type-Options, Referrer-Policy, HSTS.
  • CSRF-токены на каждом POST-запросе админки.
  • Rate limiting на /token, /authorize, /sso, /console/users.
  • http.MaxBytesReader на POST-эндпоинтах.
  • Graceful shutdown через signal.NotifyContext + server.Shutdown.

Стадия 4 — enterprise (недели 4–6)

  • Ротация ключей с multi-key JWKS и валидатором предыдущего ключа.
  • Перевод генерации новых ключей на RSA-4096.
  • SAML Single Logout (SLO) для подключённых SP.
  • Структурированные аудит-логи: кто, когда, что, откуда и с каким результатом.
  • Опциональное серверное хранилище сессий (Redis или SQLite) для принудительного логаута.
  • OIDC: refresh-токены, prompt, max_age.
  • Админка: CSRF, настраиваемая верификация email, scoped API keys.
  • Health- и readiness-эндпоинты для оркестрации.

Как следить

Каждый пункт ведётся публично на GitHub в github.com/authfly. Сообщения об уязвимостях — через приватные security advisories в той же организации. Без приватной дорожной карты и без скрытых severity-оценок.


Логотип Auth Fly

Auth Fly

Открытый конструктор аутентификации

Об Auth Fly