Безопасность: опубликованный dev не стартует с дефолтными секретами
При LOCAL_PUBLIC=vps dev доступен на forbidden-stars.ru, а fail-fast по SECRET_KEY/ADMIN_PASSWORD работал только в production: снаружи оставались общеизвестный ключ JWT (подделка любого токена, включая админский) и пароль админки. Теперь проверка срабатывает при is_published — у прода и у dev на домене; на нём же cookie_secure. Dev-инструменты и Swagger на опубликованном dev остаются (решение владельца): лаунчеры и лог старта перечисляют, что открыто любому посетителю. В .env.example — что открывает vps и что у dev и prod должны быть разные SECRET_KEY. #69 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
This commit is contained in:
@@ -14,6 +14,9 @@ APP_ENV=development
|
||||
# ─── ПУБЛИКАЦИЯ ЧЕРЕЗ ДОМЕН (VPS-туннель) ─────────────────────────────────────
|
||||
# LOCAL_PUBLIC — только для DEV на твоём ПК: local = приложение лишь на localhost;
|
||||
# vps = лаунчер (run.ps1) дополнительно поднимает SSH-туннель → дев на forbidden-stars.ru.
|
||||
# Тогда любому посетителю домена открыты dev-инструменты: вход по нику без пароля,
|
||||
# список/создание игроков, жёсткое удаление аккаунтов, Swagger. Дефолтные SECRET_KEY
|
||||
# и ADMIN_PASSWORD при vps не дают стартовать — задайте свои (#69).
|
||||
# PROD выставляет себя сам через туннель-КОНТЕЙНЕР (docker-compose*.yml) — ему
|
||||
# LOCAL_PUBLIC не нужен, но VPS_TUNNEL_HOST/USER ниже он тоже читает.
|
||||
LOCAL_PUBLIC=local
|
||||
@@ -54,6 +57,7 @@ PUBLIC_BASE_URL=
|
||||
# Сгенерировать: python -c "import secrets;print(secrets.token_urlsafe(48))"
|
||||
# ВАЖНО: в секретах НЕ используйте символ '$' — docker compose трактует его как
|
||||
# подстановку переменной (token_urlsafe даёт только [A-Za-z0-9_-], это безопасно).
|
||||
# У dev и prod ключи должны быть РАЗНЫМИ: иначе токен, подписанный на dev, примет прод.
|
||||
SECRET_KEY=change-me-dev-secret-not-for-production
|
||||
JWT_ALGORITHM=HS256
|
||||
JWT_USER_TTL_MINUTES=10080
|
||||
|
||||
Reference in New Issue
Block a user