у записи появился владелец: чужую больше не отдают
- колонка `owner` связью с `users` в обеих коллекциях новым шагом схемы `202608140001`; чтение задачи сужено владельцем, и чужая, ничья и несуществующая дают один ответ; правило просмотра файлов сужено им же - приём по HTTP берёт владельца из сессии, а предъявителя без учётной записи пользователя отвергает до чтения тела: позже пришлось бы убирать уложенный файл, а уборки файлов сервис не умеет. Выборка воркера владельцем не сужается - удаление учётной записи с записями отвергается стражем, и вешает его сама сборка хранилища: сборка, забывшая его позвать, теряла защиту молча
This commit is contained in:
+11
-7
@@ -10,9 +10,13 @@
|
||||
|
||||
Целевой периметр добавляет к нему отдельный вход для программ по личным токенам
|
||||
и два уровня доступа — пользователь видит свои записи, владелец сервиса ещё и
|
||||
страницу расхода. **Разграничения по владельцу нет:** всякий вошедший видит все
|
||||
записи и все расшифровки, как видел их прежде аноним. Его заводит задача
|
||||
`record-ownership`.
|
||||
страницу расхода. **Разграничение по владельцу записи заведено 2026-08-14**
|
||||
задачей `record-ownership`: и опрос готовности, и файл записи сужены владельцем
|
||||
записи, а чужая отвечает «не найдено». Целевому периметру недостаёт теперь второго уровня
|
||||
доступа — страницы расхода для владельца сервиса.
|
||||
|
||||
Записи, принятые ботом, владельца не имеют и по API не достаются никому: связи
|
||||
чата с учётной записью приложения нет, её заводит `telegram-account-link`.
|
||||
|
||||
Разграничение доступа в Telegram осталось прежним — белым списком, и с учётной
|
||||
записью приложения он не связан.
|
||||
@@ -173,9 +177,9 @@ Telegram отправителю.
|
||||
прокси — работа выкладки, и сервис на неё не полагается: содержимого записей
|
||||
эти адреса не несут.
|
||||
|
||||
Владения записью в модели данных по-прежнему нет: у задачи нет пользователя.
|
||||
Знание UUID задачи и есть право её читать — теперь для всякого вошедшего, а не
|
||||
для всякого встречного.
|
||||
Владение записью в модели данных появилось 2026-08-14: у задачи и у её файла
|
||||
есть владелец. Знание идентификатора задачи правом её читать больше не является
|
||||
— читает её тот, кто её принёс.
|
||||
|
||||
Целевой периметр заводит четыре механизма вместо одного белого списка; первый из
|
||||
них уже стоит:
|
||||
@@ -183,7 +187,7 @@ Telegram отправителю.
|
||||
| Механизм | Что даёт | Чья задача |
|
||||
| --- | --- | --- |
|
||||
| Сессия OIDC у Authelia | Право открыть приложение и его эндпоинты — **сделано 2026-08-12** | `oidc-login` |
|
||||
| Владелец у задачи и файла | Чужая запись по её идентификатору отвечает «не найдено» | `record-ownership` |
|
||||
| Владелец у задачи и файла | Чужая запись по её идентификатору отвечает «не найдено» — **сделано 2026-08-14** | `record-ownership` |
|
||||
| Личный токен | Права своего владельца программе, без браузерной сессии | `api-tokens` |
|
||||
| Признак владельца сервиса | Страницу расхода и сводку по всем пользователям | `admin-stats-screen` |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user