kin: BATON-ARCH-003 Rate limiting /api/register + timing-safe сравнение токенов

This commit is contained in:
Gros Frumos 2026-03-20 21:11:04 +02:00
parent 8012cb1c0f
commit aff655e73a

View file

@ -116,13 +116,44 @@ OnUnitActiveSec=10min
WantedBy=timers.target WantedBy=timers.target
``` ```
Активация: Готовые файлы находятся в `deploy/`:
```bash ```bash
systemctl daemon-reload # 1. Скопировать файлы
systemctl enable --now baton-keepalive.timer sudo cp deploy/baton-keepalive.service /etc/systemd/system/
sudo cp deploy/baton-keepalive.timer /etc/systemd/system/
# 2. Заменить URL на реальный
sudo sed -i 's|https://your-app.example.com|https://YOUR_APP_URL|g' \
/etc/systemd/system/baton-keepalive.service
# 3. Включить и запустить
sudo systemctl daemon-reload
sudo systemctl enable --now baton-keepalive.timer
# 4. Проверить
systemctl list-timers baton-keepalive.timer systemctl list-timers baton-keepalive.timer
``` ```
### Keep-alive через UptimeRobot (внешний сервис, рекомендуется)
[UptimeRobot](https://uptimerobot.com) — бесплатный сервис мониторинга, который пингует ваш `/health` снаружи каждые 5 минут. В отличие от self-ping, он работает даже если платформа убила процесс.
**Настройка (бесплатно, без регистрации кредитной карты):**
1. Зарегистрируйтесь на [uptimerobot.com](https://uptimerobot.com)
2. **Add New Monitor** → тип **HTTP(s)**
3. Заполните:
- **Friendly Name:** `Baton Health`
- **URL:** `https://your-app.example.com/health`
- **Monitoring Interval:** `5 minutes`
4. Сохраните. UptimeRobot начнёт пинговать каждые 5 минут и пришлёт email при падении.
**Плюсы:** работает независимо от хостинга, бесплатно до 50 мониторов, email/Telegram-уведомления.
**Минусы:** требует публичный URL (для локальной разработки не подходит).
> **Рекомендация:** для прода используйте UptimeRobot как внешний watchdog + self-ping (APP_URL) как запасной вариант.
## Nginx deployment ## Nginx deployment
Для проксирования через nginx используйте готовый шаблон `nginx/baton.conf`. Для проксирования через nginx используйте готовый шаблон `nginx/baton.conf`.