背景
client と backend の間には、browser に backend credential を露出させないための same-origin proxy が存在する。
browser-side request は GET / POST / PUT / DELETE 等を /proxy/api/* へ送り、server-side proxy が session cookie を検証して backend の Authorization header を注入する。
GET も pagination / polling / refresh 等の browser interaction で必要になるため、proxy の正規用途として扱う。
目的
HTTP method に依存せず、browser / proxy / backend の security boundary を機械保証する。
正規の通信経路
Initial server-side request
Server Component / Server Action
↓
server API client
↓
backend
Browser-driven request
browser
↓
same-origin /proxy/api/*
↓
session validation
↓
Authorization injection
↓
backend
proxy は GET を含む browser-driven request をサポートする。
Security invariant
Session cookie
HttpOnly
- production では
Secure
SameSite=Lax 以上
-有限の expiry
-明示的な path
Proxy
- browser に backend Authorization token を返さない
- Authorization は server-side proxy でのみ注入する
- backend URI は server-only config とする
- arbitrary browser
Authorization header をそのまま trust / forward しない
- forwarding header を allowlist 化する
- backend response header も必要なものだけ返す
- session 未認証時は backend を呼ばず 401
CSRF / request semantics
GET / HEAD は read-only request として proxy 可能。
POST / PUT / PATCH / DELETE 等の state-changing request については same-origin / Origin / CSRF policy を定義して検証する。
「GETをproxyで禁止する」ことは本 policy の目的ではない。
Acceptance Criteria
背景
client と backend の間には、browser に backend credential を露出させないための same-origin proxy が存在する。
browser-side request は GET / POST / PUT / DELETE 等を
/proxy/api/*へ送り、server-side proxy が session cookie を検証して backend のAuthorizationheader を注入する。GET も pagination / polling / refresh 等の browser interaction で必要になるため、proxy の正規用途として扱う。
目的
HTTP method に依存せず、browser / proxy / backend の security boundary を機械保証する。
正規の通信経路
Initial server-side request
Browser-driven request
proxy は GET を含む browser-driven request をサポートする。
Security invariant
Session cookie
HttpOnlySecureSameSite=Lax以上-有限の expiry
-明示的な path
Proxy
Authorizationheader をそのまま trust / forward しないCSRF / request semantics
GET / HEAD は read-only request として proxy 可能。
POST / PUT / PATCH / DELETE 等の state-changing request については same-origin / Origin / CSRF policy を定義して検証する。
「GETをproxyで禁止する」ことは本 policy の目的ではない。
Acceptance Criteria