HTTP Host 헤더와 URL 도메인 불일치 시 발생하는 문제점

요청 처리 과정
-
DNS 조회 단계:
- 클라이언트는 URL에 명시된 도메인(m.com)을 DNS 서버에 조회합니다.
- DNS 서버는 해당 도메인의 IP 주소(192.0.2.1)를 반환합니다.
-
TCP 연결 단계:
- 클라이언트는 DNS에서 받은 IP 주소(192.0.2.1)로 TCP 연결을 수립합니다.
-
HTTP 요청 단계:
- 클라이언트가 HTTP 요청을 보낼 때, Host 헤더에 URL과 다른 값(naver.com)을 설정합니다.
- 이 시점에서 불일치가 발생합니다.
주요 문제점
-
서버 라우팅 혼란:
- 하나의 IP 주소(192.0.2.1)에서 여러 도메인(example.com과 other-site.com)을 호스팅하는 경우, 서버는 Host 헤더를 기반으로 라우팅합니다.
- Host 헤더가 other-site.com이면, 실제 example.com의 컨텐츠 대신 other-site.com의 컨텐츠를 반환할 것입니다.
-
보안 이슈:
- 의도적으로 Host 헤더를 조작하면 접근 제어를 우회할 수 있습니다.
- 클라이언트가 악의적인 목적으로 Host 헤더를 변조하여 서버가 다른 가상 호스트의 컨텐츠를 제공하도록 유도할 수 있습니다.
-
HTTP/1.1 규정 위반:
- HTTP/1.1 표준에 따르면, Host 헤더는 요청 URL의 호스트/포트와 일치해야 합니다.
- 많은 서버는 이 불일치를 오류로 처리하거나 요청을 거부할 수 있습니다.
실제 응용 사례
-
Virtual Hosting 환경:
- 한 웹 서버가 여러 도메인을 서비스할 때 Host 헤더가 중요합니다.
- 불일치가 발생하면 잘못된 웹사이트가 표시될 수 있습니다.
-
보안 테스트:
- 많은 웹 애플리케이션 보안 테스트에서 Host 헤더 조작을 통해 취약점을 찾습니다.
-
프록시/CDN 환경:
- 프록시나 CDN을 사용할 때, 올바른 Host 헤더 전달이 중요합니다.
- 불일치 시 캐싱 문제나 요청 라우팅 문제가 발생할 수 있습니다.