`Referer`(또는 `Referrer`) 헤더와 `X-Forwarded-For` 헤더 차이
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 스푸핑)를 일으킬 수 있습니다.
이 두 헤더는 각기 다른 목적으로 사용되며, 서로 보완적이지 않지만, 특정 상황에서 중요한 역할을 합니다.