카테고리 없음

`Referer`(또는 `Referrer`) 헤더와 `X-Forwarded-For` 헤더 차이

미스터몽키 2024. 8. 14. 00:50

Referer(또는 Referrer) 헤더와 X-Forwarded-For 헤더는 둘 다 HTTP 요청 헤더이지만, 이들이 하는 역할과 사용되는 목적은 다릅니다.

1. Referer 헤더

  • 기능: Referer 헤더는 클라이언트가 현재 요청을 보낼 때, 해당 요청이 어디에서 유래했는지를 나타냅니다. 즉, 클라이언트가 어떤 페이지에서 현재 요청 URL로 이동했는지를 서버에 알려줍니다.

  • 사용 예시: 사용자가 웹페이지 A에서 링크를 클릭하여 웹페이지 B로 이동했을 때, 웹페이지 B로의 요청에 Referer 헤더가 포함되어 웹페이지 A의 URL을 전달합니다.

    예를 들어, 사용자가 https://www.example.com/page1에서 링크를 클릭해 https://www.otherwebsite.com/page2로 이동하면, https://www.otherwebsite.com/page2로의 요청에 다음과 같은 Referer 헤더가 포함됩니다:

    Referer: https://www.example.com/page1
  • 보안 및 프라이버시: Referer 헤더는 방문자가 어떤 페이지에서 왔는지 정보가 포함되기 때문에, 개인정보 보호와 관련된 문제를 일으킬 수 있습니다. 예를 들어, 검색 결과 페이지에서 클릭한 URL에 포함된 검색어가 Referer 헤더를 통해 노출될 수 있습니다. 이를 방지하기 위해 브라우저는 Referer 정보를 제한적으로 제공하거나, Referrer Policy를 설정하여 제어할 수 있습니다.

2. X-Forwarded-For 헤더

  • 기능: X-Forwarded-For 헤더는 리버스 프록시, 로드 밸런서, 또는 다른 중간 서버를 통해 전달된 요청의 원래 클라이언트 IP 주소를 나타냅니다. 이 헤더는 서버가 클라이언트의 실제 IP 주소를 알 수 있게 해줍니다, 특히 서버가 직접 클라이언트의 요청을 받지 않고 중간 서버를 통해 요청을 받을 때 유용합니다.

  • 사용 예시: 클라이언트가 203.0.113.1이라는 IP를 가지고 있고, 이 요청이 프록시 서버를 거쳐 서버로 전달되었다면, 프록시는 다음과 같은 헤더를 추가합니다:

    X-Forwarded-For: 203.0.113.1

    서버는 이 헤더를 보고 클라이언트의 원래 IP가 203.0.113.1이라는 것을 알 수 있습니다.

  • 보안 고려사항: X-Forwarded-For 헤더는 신뢰할 수 없는 출처에서 조작될 수 있으므로, 보안상 이를 사용할 때는 신뢰할 수 있는 프록시 서버에서만 이 정보를 신뢰해야 합니다.

차이점 요약

  • 목적: Referer는 사용자가 이전에 방문한 웹 페이지의 URL을 알려주는 반면, X-Forwarded-For는 클라이언트의 원래 IP 주소를 알려줍니다.

  • 사용 위치: Referer는 주로 웹 페이지 이동 경로를 추적하는 데 사용되고, X-Forwarded-For는 서버가 클라이언트의 실제 IP를 알 수 있도록 하는 데 사용됩니다.

  • 보안: Referer 헤더는 개인정보 보호와 관련된 문제를 일으킬 수 있는 반면, X-Forwarded-For는 IP 추적과 관련된 보안 문제(예: IP 스푸핑)를 일으킬 수 있습니다.

이 두 헤더는 각기 다른 목적으로 사용되며, 서로 보완적이지 않지만, 특정 상황에서 중요한 역할을 합니다.