документы: сведены расхождения, найденные сверкой канона
- один факт — один дом: рецепт локального входа, правило чтения X-Forwarded-For, уровень строки журнала и опись опор изъятия сведены к своим домам, копии заменены ссылками - форма [auth.test_headers] выровнена по образцу конфига в семи местах; сценарии intake и archive перестали ссылаться на сессию, которой сервис не выдаёт - поправлены протухшие факты: ключ объекта строит ULID, а не UUID; сверку адреса пира зовут трое, а не двое; обзор capability access знает о задаче 2026-08-23
This commit is contained in:
+12
-13
@@ -85,10 +85,12 @@ Telegram — связи чата с учётной записью сервис
|
||||
**Изъятие из барьера одно — отладочный запуск, и заведено оно 2026-08-23**
|
||||
задачей `config-test-headers-login`. При включённом предохранителе
|
||||
`[server] debug` заголовки входа ставит не прокси, а сам сервис значениями из
|
||||
секции `[auth] test_headers`: на машине разработчика прокси нет, а браузер
|
||||
секции `[auth.test_headers]`: на машине разработчика прокси нет, а браузер
|
||||
заголовков не ставит. Узнавание при этом остаётся тем же и подставленного
|
||||
заголовка от пришедшего не отличает — отлаживается боевая ветка. Нормирует
|
||||
изъятие спека [access](../openspec/specs/access/spec.md).
|
||||
изъятие спека [access](../openspec/specs/access/spec.md), решение о подстановке
|
||||
самим сервисом —
|
||||
[ADR-2026-08-23-test-headers-substituted-by-service](adr/ADR-2026-08-23-test-headers-substituted-by-service.md).
|
||||
|
||||
Держится оно тремя вещами, и других нет: умолчание предохранителя —
|
||||
«выключено»; заполненная имитация при выключенном предохранителе роняет старт с
|
||||
@@ -103,19 +105,16 @@ Telegram — связи чата с учётной записью сервис
|
||||
перечне доверенных адресов и назовёт своим именем всякого, чей запрос пришёл
|
||||
через обратный прокси, — то есть всякого, кто пришёл обычным путём. Адресного
|
||||
предохранителя у изъятия нет: требование петлевого перечня рассматривалось и
|
||||
снято решением владельца на чекпоинте задачи.
|
||||
снято — [ADR-2026-08-23-no-address-guard-for-debug-login](adr/ADR-2026-08-23-no-address-guard-for-debug-login.md).
|
||||
|
||||
**`X-Forwarded-For` сервис читает сам, и правило чтения закрывает дописывание.**
|
||||
С 2026-08-22 адрес спрашивающего ограничитель частоты берёт из этого заголовка:
|
||||
иначе счётчик ведётся по адресу пира, а пир теперь всегда один — прокси, — и
|
||||
бюджет становится общим на весь сервис. Цепочка читается **справа налево**,
|
||||
доверенные адреса отбрасываются, и ключом становится первый недоверенный: левым
|
||||
значением распоряжается сам спрашивающий, а правое приписал ближайший к нам
|
||||
прокси. Заголовок читается всеми строками, а не одной: цепочка законно приходит
|
||||
несколькими. Прокси, дописывающий `X-Forwarded-For` к присланному, этим правилом
|
||||
покрыт, и требования «перезаписывать, а не дописывать» у сервиса к нему нет — в
|
||||
отличие от `Remote-*`. Барьером узнавания заголовок при этом не служит: кто
|
||||
пришёл, решает адрес самого соединения.
|
||||
Как именно читается цепочка, нормирует спека
|
||||
[archive](../openspec/specs/archive/spec.md), «Адреса приложения живут своим
|
||||
пространством». Отсюда периметровое следствие: прокси, дописывающий
|
||||
`X-Forwarded-For` к присланному, этим правилом покрыт, и требования
|
||||
«перезаписывать, а не дописывать» у сервиса к нему нет — в отличие от `Remote-*`.
|
||||
Барьером узнавания заголовок при этом не служит: кто пришёл, решает адрес самого
|
||||
соединения.
|
||||
|
||||
**Ширина перечня доверенных адресов — тоже цена, и она принимается сознательно.**
|
||||
Перечень задаёт, чьему `Remote-User` верить, и всякий, кто дотянулся до сервиса
|
||||
|
||||
Reference in New Issue
Block a user