textmachine/platform/docs/p8-review/sse-origin-probe.txt

28 lines
1.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

P8-REVIEW, ось 2: SSE-хендшейк не проверяет Origin. Живая проба 24.08.2026, дев-демон 127.0.0.1:8099.
$ curl -i -b <cookie-jar> -H "Origin: https://evil.example" -H "Accept: text/event-stream" http://127.0.0.1:8099/v0/books/<id>/events
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'
Content-Type: text/event-stream
Referrer-Policy: no-referrer
X-Accel-Buffering: no
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Request-Id: FH32M4OJU5TUOITX
X-Robots-Tag: noindex, nofollow
Date: Mon, 24 Aug 2026 18:05:43 GMT
Transfer-Encoding: chunked
event: hello
$ тот же запрос БЕЗ куки -> код ответа:
401
Заголовка X-TM-Client в запросе НЕТ, и он не потребован: auth.cookieUnsafe освобождает GET
(internal/auth/csrf.go, switch по методу), а http.CrossOriginProtection судит только unsafe-методы.
Что при этом РЕАЛЬНО закрывает браузерный случай и чем удерживается: кука SameSite=Lax
(internal/auth/cookie.go, set) не уходит на кросс-сайтовый подзапрос, префикс __Host- не даёт
её соседнему поддомену, а CORS-слоя нет вовсе (PD-96), поэтому кросс-origin EventSource
браузер и так не отдаст странице. Защита есть, но она ТРАНЗИТИВНА и ни одним тестом как
защита хендшейка не пинится — класс PD-86.