Dialog portalem do body, hlavicky odpovedi u chyby

Dialog se vykresloval uvnitr karty konektoru misto pres obrazovku. Samo
position: fixed nestaci: rodic s backdrop-filter (nase .glass, tedy skoro
kazdy panel a karta) je pro fixed potomka containing block. Modal proto jde
portalem do document.body. Tykalo se to vsech dialogu, videt to bylo az
u Logu, ktere jsou v male karte.

K chybe se zapisuji vybrane hlavicky odpovedi: server, via, content-type,
www-authenticate, retry-after, x-request-id, date. Rikaji, kdo odpoved vydal.
Server: Kestrel je sama aplikace, Via: 1.1 Caddy proxy pred ni. U 403 od proxy
byva telo prazdne a bez hlavicek by nezbylo vubec nic. Allowlist, ne vsechno:
Set-Cookie a podobne do zaznamu nepatri.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-08-25 07:15:22 +02:00
co-authored by Claude Opus 5
parent 5a124a53d8
commit ab88979627
11 changed files with 143 additions and 9 deletions
+7
View File
@@ -179,6 +179,13 @@ Samotny kod odpovedi nikoho nikam nedovede. Hlaska proto nese tri veci:
na karte konektoru i v hlavicce dialogu Logy. Hadat ji podle toho, kde je
nasazeny portal, nejde.
4. **Vybrane hlavicky odpovedi.** `server`, `via`, `content-type`,
`www-authenticate`, `retry-after`, `x-request-id`, `date`. Rikaji, **kdo**
odpoved vydal: `Server: Kestrel` je sama aplikace, `Via: 1.1 Caddy` proxy
pred ni. U 403 od proxy byva telo prazdne, takze tohle je jedina stopa,
ktera zbyde. Allowlist, ne vsechno - `Set-Cookie` a podobne do zaznamu
nepatri.
Co se **nedela**: sonda na `/health` vedle overeni. `/health` povoleni IP
adresy nevyzaduje, takze z toho, ze projde, se o IP nic nedozvis - byla by to
veta, ktera zni jako zaver a zadny neni.
+22 -1
View File
@@ -40,13 +40,34 @@ nepomuze. Duvod pritom sluzba do tela odpovedi napsala, jen se zahodil.
Migrace `003_connector_checks.sql`, endpoint
`GET /api/dashboard/connectors/:id/checks`.
### Opraveno
- **Dialog se vykresluje portalem do `document.body`.** Samo `position: fixed`
nestaci: rodic s `backdrop-filter` (nase `.glass`, tedy skoro kazdy panel
a karta) je pro fixed potomka containing block. Dialog se pak vesel do te
karty misto pres celou obrazovku. Tykalo se to vsech dialogu, jen to bylo
videt az u Logu, ktere jsou v male karte konektoru.
### Pridano pozdeji
- **Vybrane hlavicky odpovedi u chyby** (`ScriptError.responseHeaders`):
`server`, `via`, `content-type`, `www-authenticate`, `retry-after`,
`x-request-id`, `date`. Rikaji, kdo odpoved vydal - `Server: Kestrel` je
aplikace, `Via: 1.1 Caddy` proxy pred ni. U 403 od proxy byva telo prazdne
a bez hlavicek by nezbylo nic. Allowlist, ne vsechno: `Set-Cookie` a podobne
do zaznamu nepatri.
### Nedoreseno
Proc iDoklad vraci 403, zatim nevime. Vylouceno je to, co posilame: zadna
kombinace hlavicek (`Idempotency-Key`, `Accept`, User-Agent) 403 nevyvola,
sluzba na ne odpovida 401 jako na cokoliv jineho. Zbyva **zdrojova IP adresa
naseho containeru** nebo **403 od iDokladu samotneho**, ktere sluzba jen
predava dal. Rozhodne to telo te odpovedi, ktere je nove v portalu pod Logy.
predava dal. Zvenci to reprodukovat nejde: pres dvacet variant hlavicek
(`Idempotency-Key`, `Accept`, User-Agent, jazyk, delka a tvar udaju, duplicitni
hlavicky, HTTP/1.1) vraci vzdycky 401. To ale nic nedokazuje o IP adrese
containeru - z povolene IP se pochopitelne projde. Rozhodnou hlavicky odpovedi
a jeji telo, obojí je nove v portalu pod Logy.
Sonda na `/health` vedle overeni byla spatny napad a je pryc: `/health`
povoleni IP adresy nevyzaduje, takze z toho, ze projde, o IP nic neplyne.