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

sojw·2025년 5월 9일

요청 처리 과정

  1. DNS 조회 단계:

    • 클라이언트는 URL에 명시된 도메인(m.com)을 DNS 서버에 조회합니다.
    • DNS 서버는 해당 도메인의 IP 주소(192.0.2.1)를 반환합니다.
  2. TCP 연결 단계:

    • 클라이언트는 DNS에서 받은 IP 주소(192.0.2.1)로 TCP 연결을 수립합니다.
  3. HTTP 요청 단계:

    • 클라이언트가 HTTP 요청을 보낼 때, Host 헤더에 URL과 다른 값(naver.com)을 설정합니다.
    • 이 시점에서 불일치가 발생합니다.

주요 문제점

  1. 서버 라우팅 혼란:

    • 하나의 IP 주소(192.0.2.1)에서 여러 도메인(example.com과 other-site.com)을 호스팅하는 경우, 서버는 Host 헤더를 기반으로 라우팅합니다.
    • Host 헤더가 other-site.com이면, 실제 example.com의 컨텐츠 대신 other-site.com의 컨텐츠를 반환할 것입니다.
  2. 보안 이슈:

    • 의도적으로 Host 헤더를 조작하면 접근 제어를 우회할 수 있습니다.
    • 클라이언트가 악의적인 목적으로 Host 헤더를 변조하여 서버가 다른 가상 호스트의 컨텐츠를 제공하도록 유도할 수 있습니다.
  3. HTTP/1.1 규정 위반:

    • HTTP/1.1 표준에 따르면, Host 헤더는 요청 URL의 호스트/포트와 일치해야 합니다.
    • 많은 서버는 이 불일치를 오류로 처리하거나 요청을 거부할 수 있습니다.

실제 응용 사례

  1. Virtual Hosting 환경:

    • 한 웹 서버가 여러 도메인을 서비스할 때 Host 헤더가 중요합니다.
    • 불일치가 발생하면 잘못된 웹사이트가 표시될 수 있습니다.
  2. 보안 테스트:

    • 많은 웹 애플리케이션 보안 테스트에서 Host 헤더 조작을 통해 취약점을 찾습니다.
  3. 프록시/CDN 환경:

    • 프록시나 CDN을 사용할 때, 올바른 Host 헤더 전달이 중요합니다.
    • 불일치 시 캐싱 문제나 요청 라우팅 문제가 발생할 수 있습니다.

0개의 댓글