Добавлены уведомления
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
| exact `/health/live`, `/health/ready` | `bitrix-local-app:8080` | по умолчанию не публикуются; только при явно выбранной ops/monitoring policy |
|
||||
| `/` | static SPA либо Expo dev upstream | `try_files` fallback |
|
||||
|
||||
`/internal/`, `/_internal/`, Redis/OTLP/admin/status/config files запрещены exact prefix response `404` (допустим `403`, но единообразно выбран `404`). Никакого fallback internal path в SPA или общий proxy. `message-safety` и `/internal/sms/*` не имеют публичного route.
|
||||
Notification paths внутри `/api/` имеют отдельные edge-зоны: public catalog/campaigns, JWT read, actions, uploads и downloads. `/internal/`, `/_internal/`, Redis/OTLP/admin/status/config files запрещены exact prefix response `404` (допустим `403`, но единообразно выбран `404`). Никакого fallback internal path в SPA или общий proxy. `message-safety`, `/internal/sms/*` и `/internal/notifications/*` не имеют публичного route.
|
||||
|
||||
## 3. Upstreams
|
||||
|
||||
@@ -118,6 +118,10 @@ traceparent: входной валидный либо новый согласн
|
||||
- `api`: общий API;
|
||||
- `polling`: GET messages fallback;
|
||||
- `downloads`: issuance URL;
|
||||
- `notifications_read`: list/counter/detail;
|
||||
- `notifications_action`: read/hide/CTA/button;
|
||||
- `notification_upload`: универсальные upload drafts;
|
||||
- `notifications_public`: guest notifications и каталог видов;
|
||||
- `bitrix_callbacks`: мягкий burst для повторов;
|
||||
- `idgtl_callbacks`: отдельный bounded burst, учитывающий повтор каждые 5 минут в течение суток;
|
||||
- `ws_connect`: handshake;
|
||||
@@ -158,6 +162,7 @@ CORS — exact allow-list из согласованного deploy config; appli
|
||||
- connect-src `'self'` `https:` к разрешённому S3 endpoint и `wss:` текущего host;
|
||||
- img-src `'self' data: blob:` и разрешённые signed HTTPS resources;
|
||||
- object-src `'none'`, base-uri `'self'`, frame-ancestors `'none'`;
|
||||
- frame-src `'none'`: инструкция `install_app` всегда открывается в новой вкладке, iframe/модалка не поддерживается;
|
||||
- script-src без `unsafe-eval` production; nonce/hash при необходимости;
|
||||
- style-src policy согласовать с Expo build, постепенно исключить unsafe-inline.
|
||||
|
||||
@@ -260,6 +265,8 @@ curl -i https://tohin.ru/internal/safety/v1/messages/check
|
||||
- upstream down/timeout, failed reload, renewal rehearsal;
|
||||
- logs не содержат secrets/query tokens.
|
||||
- allowed Direct callback проходит; wrong IP/method и любой `/internal/sms/*` отклоняются; Authorization отсутствует в логах.
|
||||
- `/internal/notifications/*` снаружи всегда `404`; notification read/action/upload/public routes используют свои зоны и возвращают `429`.
|
||||
- CSP содержит `frame-src 'none'`; инструкция проверяется как новая вкладка без embedded content.
|
||||
|
||||
## 19. Definition of Done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user