Закрыть открытые вопросы: ADR-015…022, бриф айдентики
Регистрация открытая (015), контакты и приглашения по нику с закреплением ключа и блокировкой (016), лимиты (017), идентификация устройства через случайный deviceId в IndexedDB и серверный fan-out (018), отказ от серверного перца (019), смена пароля не в v1 (020), интерфейс ru/en (021), айдентика «Скобы» по turn 2 канваса (022). Архитектура, модель угроз и README обновлены. В открытых вопросах остались два: моногарнитура с кириллицей (Fragment Mono её не содержит) и удаление аккаунта. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R2pCJkWyG2aYu48u1Vp1A1
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# ADR-017: Лимиты
|
||||
|
||||
Закрывает открытый вопрос о лимитах и антиспаме.
|
||||
|
||||
## Контекст
|
||||
|
||||
Открытая регистрация (ADR-015) и реле с очередями (ADR-008) требуют потолков: на размер сообщения, на частоту действий, на объём хранимого. Сервер не видит содержимого, поэтому антиспам может быть только структурным и количественным — фильтрации по тексту не существует.
|
||||
|
||||
## Решение
|
||||
|
||||
**Размеры.**
|
||||
- Сообщение — до 4 096 символов плейнтекста; проверяет клиент до шифрования.
|
||||
- Тело любого запроса к серверу — до 32 КиБ. Это единственная проверка размера на сервере.
|
||||
- Ник — 3–32 символа: латиница в нижнем регистре, цифры, `_`, `-`. Регистр не различается.
|
||||
|
||||
**Частота.** Token bucket в памяти сервера, без внешних хранилищ. Превышение — `429` с `Retry-After`.
|
||||
- Отправка сообщений: 60 в минуту на аккаунт.
|
||||
- Запросы контакта: 20 в сутки на аккаунт.
|
||||
- Регистрация: 5 в час с одного IP.
|
||||
- Вход: 10 попыток за 15 минут на ник, 30 — с одного IP. Argon2 дорогой; это защита процессора сервера в той же мере, что и аккаунтов.
|
||||
- Прочие запросы: 120 в минуту на аккаунт.
|
||||
|
||||
**Объёмы.**
|
||||
- Очередь устройства — до 10 000 сообщений; при переполнении старейшие удаляются. Плюс 30-дневный TTL из ADR-008.
|
||||
- Контактов у аккаунта — до 500. Участников в комнате — до 100. Устройств у аккаунта — до 10.
|
||||
|
||||
**Антиспам.** Сводится к трём вещам: писать можно только взаимным контактам (ADR-016), блокировка ника (ADR-016), лимиты выше. Жалоб и модерации нет: серверу нечего модерировать.
|
||||
|
||||
## Следствия
|
||||
|
||||
- Все числа — константы в одном файле сервера. Клиент дублирует только длину сообщения и формат ника — для подсказок до отправки. Конфигурации нет: поменять лимит — поменять константу и пересобрать.
|
||||
- Перезапуск сервера сбрасывает счётчики. Для маленького инструмента это приемлемо.
|
||||
- Лимит по IP не различает людей за одним NAT. Осознанная грубость: цифры взяты с запасом.
|
||||
- Переполнение очереди теряет сообщения, как и TTL. Устройство, не выходившее на связь, получает не всё — это уже зафиксировано в ADR-008.
|
||||
Reference in New Issue
Block a user