요청 인스펙터
앱이 실제로 받은 것을 그대로 보여줍니다. 우리가 소켓에서 직접 관측한 값은 별도 섹션으로 분리했습니다 — 받은 헤더와 섞으면 측정이 무의미해집니다.
접속 경로 판정
결론보다 근거가 중요합니다. 판정에 쓰인 값을 함께 보여줍니다.
- 판정 (서버만으로)
- unknown
- 판정 (브라우저 대조)
- 판별 중…
- 근거
- 서버는 요청 헤더만으로 경유 여부를 알 수 없습니다 — 프록시가 X-Forwarded-* 를 보내지 않기 때문입니다(B-1). 브라우저 자신의 origin 과 대조해야만 판별됩니다.
- base URL (사용중)
- https://aws-insider-e1e444fd-dfae-480a-b782-5eaa35682f5e.feelanet.ai
- └ 요청에서 유도하면
- https://aws-insider-e1e444fd-dfae-480a-b782-5eaa35682f5e.feelanet.ai
- └ PUBLIC_BASE_URL
- https://adfs-lab.prism-proxy.localtest.me:8443
- HTTP 버전
- 1.1
- ⚠ 고정값(https://adfs-lab.prism-proxy.localtest.me:8443)과 요청 유도값(https://aws-insider-e1e444fd-dfae-480a-b782-5eaa35682f5e.feelanet.ai)이 다릅니다 — 프록시를 경유 중이라는 신호입니다.
클라이언트 IP 후보
프록시 경유 시 진짜 클라이언트 IP는 어디에도 없습니다. 비대칭에 주의 — ADFS는 브라우저가 직접 접속하므로 진짜 IP를 봅니다.
| 출처 | 값 | 신뢰 | 설명 |
|---|---|---|---|
| socket.remoteAddress (우리가 직접 관측) | 192.168.4.100 | 신뢰 | 앱이 보는 실제 피어. 프록시 경유 시 이 값은 온프렘 HCA 프로세스의 주소이며 **모든 외부 사용자가 같은 값**으로 보입니다. (B-5) |
| X-Forwarded-For (와이어) | 216.73.216.55 | 위조 가능 | prism-proxy 는 이 헤더를 주입하지 않습니다. 값이 보인다면 클라이언트가 스스로 붙인 것이므로 신뢰하면 안 됩니다 (IP 위조 경로). |
| X-Forwarded-For (Next 합성) | 216.73.216.55 | 위조 가능 | ⚠ Next.js 가 소켓 정보로 스스로 만들어 넣은 값입니다. 프록시가 보낸 것이 아닙니다 — 이걸 증거로 쓰면 결론이 정반대가 됩니다. |
| X-Real-IP (와이어) | 216.73.216.55 | 위조 가능 | 동일하게 주입되지 않습니다. |
| x-ms-forwarded-client-ip | — | 없음 | WAP/MS-ADFSPIP 프록시가 붙이는 헤더. 이 경로에는 WAP 이 없으므로 항상 비어 있습니다. ADFS 의 Extranet Smart Lockout 이 이 값을 씁니다. |
헤더 diff — 프록시 경유 vs 루프백 직접
같은 앱을 127.0.0.1로 직접 불러 헤더 집합을 비교했습니다. 프록시가 더하고 빼는 것이 그대로 드러납니다.
이 요청에만 있음 4
x-forwarded-scheme x-real-ip x-request-id x-scheme
루프백에만 있음 4
accept-language cache-control pragma sec-fetch-mode
받은 헤더 (13개 · 501 바이트)
프록시/클라이언트가 실제로 보낸 것만. 우리 주입분은 제외했습니다.
accept: */*
accept-encoding: gzip, br, zstd, deflate
connection: keep-alive
host: 192.168.4.110:3000
user-agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
x-forwarded-for: 216.73.216.55
x-forwarded-host: aws-insider-e1e444fd-dfae-480a-b782-5eaa35682f5e.feelanet.ai
x-forwarded-port: 443
x-forwarded-proto: https
x-forwarded-scheme: https
x-real-ip: 216.73.216.55
x-request-id: fabba3d47a30a6e2ec7afbef08abdcc2
x-scheme: https우리가 직접 관측한 값
server.mjs 가 소켓에서 읽어 넘긴 값입니다. 받은 헤더가 아닙니다 — 혼동하면 측정이 망가집니다.
wire-x-forwarded-host: aws-insider-e1e444fd-dfae-480a-b782-5eaa35682f5e.feelanet.ai wire-x-forwarded-proto: https wire-x-forwarded-for: 216.73.216.55 wire-x-forwarded-port: 443 wire-x-real-ip: 216.73.216.55 wire-forward-headers: x-forwarded-host,x-forwarded-proto,x-forwarded-for,x-forwarded-port,x-real-ip remote-address: 192.168.4.100 remote-port: 63869 local-port: 3000 encrypted: 0 http-version: 1.1 wire-host: 192.168.4.110:3000
쿠키 (0개 · 0 바이트)
prism_proxy_session 은 보이지 않습니다 (정상: 프록시가 제거함).
(없음)
재현용 curl
이 요청을 그대로 다시 쏘려면.
curl -i -X GET "/lab/echo" \ -H "accept: */*" \ -H "accept-encoding: gzip, br, zstd, deflate" \ -H "user-agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" \ -H "x-forwarded-for: 216.73.216.55" \ -H "x-forwarded-host: aws-insider-e1e444fd-dfae-480a-b782-5eaa35682f5e.feelanet.ai" \ -H "x-forwarded-port: 443" \ -H "x-forwarded-proto: https" \ -H "x-forwarded-scheme: https" \ -H "x-real-ip: 216.73.216.55" \ -H "x-request-id: fabba3d47a30a6e2ec7afbef08abdcc2" \ -H "x-scheme: https"