XFF
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
X-Forwarded-For(XFF)는 HTTP 헤더 필드 중 하나로, 프록시 서버를 거쳐 웹 서버에 연결되는 클라이언트의 원래 IP 주소를 식별하는 데 사용된다. XFF 필드는 쉼표로 구분된 IP 주소 목록을 포함하며, 가장 왼쪽에 있는 IP 주소는 원래 클라이언트의 주소이다. 이 헤더는 표준화되지 않았으며, 위조될 수 있으므로 신뢰성에 주의하여 사용해야 한다. XFF는 프록시 서버, 캐시 엔진, 로드 밸런서 등 다양한 환경에서 지원되며, 웹 서버 로그에 클라이언트 IP 주소를 기록하는 데 활용될 수 있다.
더 읽어볼만한 페이지
- 익명 - 아무개
아무개는 특정 개인을 지칭하지 않고 신원을 알 수 없는 사람을 나타내는 다양한 언어 및 문화적 표현을 의미한다. - 익명 - 온라인 탈억제 효과
온라인 탈억제 효과는 익명성, 비가시성, 비동기성 같은 온라인 환경의 특성으로 인해 현실과는 다른 행동 변화를 유발하며, 긍정적·부정적 측면 모두를 지니고 있어 주의 깊은 관리가 필요하다. - HTTP - HTTPS
HTTPS는 HTTP에 보안 기능이 더해진 통신 규약으로, 웹 브라우저와 서버 간 통신을 암호화하여 보안을 강화하지만, 인증서 비용, 서버 부하, 혼합 콘텐츠 문제 등의 단점도 존재한다. - HTTP - HTTP 쿠키
HTTP 쿠키는 웹 서버가 사용자 브라우저에 저장하는 작은 텍스트 파일로, 웹 사이트가 방문 기록, 로그인 정보 등을 기억하여 HTTP의 상태 비저장성을 보완하고 세션 관리, 개인 설정, 사용자 추적 등에 활용되지만 개인 정보 보호 및 보안 문제에 대한 논란이 있다.
XFF | |
---|---|
HTTP 헤더 필드 | |
필드 종류 | 요청 헤더 |
설명 | 클라이언트가 서버로 요청을 보낼 때 사용하는 헤더 필드 |
X-Forwarded-For (XFF) | |
용도 | 클라이언트의 원 IP 주소 식별 |
형식 | X-Forwarded-For: 클라이언트 IP 주소 |
프록시 서버 환경 | 프록시 서버를 거치는 경우, 각 프록시 서버의 IP 주소가 순서대로 추가됨 |
보안 고려 사항 | XFF 헤더는 위조 가능성이 있으므로, 신뢰할 수 있는 프록시 서버에서만 사용해야 함 XFF 헤더에 의존하여 접근 제어를 수행하는 것은 위험할 수 있음 |
동작 방식 | |
클라이언트 | HTTP 요청 시 X-Forwarded-For 헤더를 추가하지 않음 (또는 기존 헤더를 수정) |
프록시 서버 | 요청을 전달할 때, 수신한 요청에 X-Forwarded-For 헤더가 없으면 헤더를 생성하고 클라이언트 IP 주소를 추가 이미 X-Forwarded-For 헤더가 존재하면, 쉼표(,)와 함께 클라이언트 IP 주소를 추가 |
웹 서버 | X-Forwarded-For 헤더를 확인하여 클라이언트의 IP 주소를 식별 가장 왼쪽의 IP 주소가 원래 클라이언트의 IP 주소 |
예시 | |
X-Forwarded-For 헤더 값 | 192.0.2.43, 203.0.113.60 |
설명 | 192.0.2.43은 클라이언트 IP 주소, 203.0.113.60은 프록시 서버 IP 주소 |
관련 헤더 | |
X-Forwarded-Proto | 클라이언트가 사용한 프로토콜 (HTTP 또는 HTTPS) 식별 |
X-Real-IP | 클라이언트의 실제 IP 주소 (일부 프록시 서버에서 사용) |
Forwarded | RFC 7239에 정의된 표준 헤더, XFF를 대체하기 위해 제안됨 |
2. 형식
X-Forwarded-For (XFF) 필드는 클라이언트 IP 주소와 프록시 서버 IP 주소 목록을 쉼표와 공백으로 구분하여 나타낸다. 가장 왼쪽의 IP 주소가 원래 클라이언트의 IP 주소이고, 이후 요청을 전달한 각 프록시 서버의 IP 주소가 순서대로 추가된다.[35][2]
X-Forwarded-For 헤더는 HTTP 프록시 서버가 요청을 전달할 때 추가되거나 수정된다. 서버는 클라이언트의 주소를 기존 X-Forwarded-For 헤더에 쉼표로 구분하여 추가하거나, 클라이언트 주소를 값으로 하는 새로운 X-Forwarded-For 헤더를 생성한다.
2014년을 기준으로 IETF RFC 7239는 XFF에 비해 더 많은 기능을 제공하는 `Forwarded` HTTP 헤더를 표준화하였다.[36] `Forwarded` 헤더의 문법 예시는 다음과 같다.
X-Forwarded-For 필드는 다양한 프록시 서버, 캐시 엔진, 웹 서버 및 로드 밸런서에서 지원된다.
일반적인 형식은 다음과 같다.
: `X-Forwarded-For: client, proxy1, proxy2`
예를 들어, 요청이 proxy1, proxy2, proxy3을 거친 경우, X-Forwarded-For 헤더는 다음과 같이 표시된다.[3]
: `X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178`
여기서 203.0.113.195는 클라이언트 IP 주소, 70.41.3.18은 proxy1의 IP 주소, 150.172.238.178은 proxy2의 IP 주소이다. proxy3의 IP 주소는 헤더에 표시되지 않고 요청의 원격 주소로 나타난다.
X-Forwarded-For 헤더는 공식적으로 표준화되지 않았기 때문에, IP 주소 형식에 몇 가지 변형이 있을 수 있다. 예를 들어, 일부 구현은 클라이언트의 포트 번호를 포함하거나, IPv6 주소를 대괄호로 묶기도 한다.
예시는 다음과 같다.
: `X-Forwarded-For: 203.0.113.195:41237, 198.51.100.100:38523`
: `X-Forwarded-For: [2001:db8::1a2b:3c4d]:41237, 198.51.100.100:26321`
: `X-Forwarded-For: [2001:db8::aa:bb]`
X-Forwarded-For 필드는 조작하기 쉬우므로[6], 제공된 정보를 신중하게 다루어야 한다. 마지막 IP 주소는 항상 마지막 프록시에 연결하는 IP 주소이므로, 이 정보가 가장 신뢰할 수 있다.
3. 사용
X-Forwarded-For 필드는 위조하기 쉽기 때문에 제공된 정보를 주의해서 사용해야 한다. 가장 오른쪽에 있는 IP 주소는 항상 마지막 프록시에 연결하는 IP 주소이므로 가장 신뢰할 수 있는 정보 출처이다. X-Forwarded-For 데이터는 순방향 또는 역방향 프록시 시나리오에서 사용할 수 있다. 서버가 신뢰할 수 있는 리버스 프록시 뒤에 있고 해당 프록시에서만 연결을 허용하는 경우, 헤더 값은 일반적으로 신뢰할 수 있다고 간주할 수 있다.
단순히 X-Forwarded-For 필드를 로깅하는 것만으로는 항상 충분하지 않다. 체인에서 마지막 프록시 IP 주소는 X-Forwarded-For 필드 내에 포함되지 않고 실제 IP 헤더에 있기 때문이다. 웹 서버는 완전성을 위해 요청의 소스 IP 주소와 X-Forwarded-For 필드 정보를 모두 로깅해야 한다.
4. 대안
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
HAProxy는 "XFF"의 대안으로 PROXY 프로토콜을 도입하였는데, 이는 래퍼 PROXY 프로토콜 파싱에 더 효율적이다.[37] 이 프로토콜은 여러 전송 프로토콜에 사용 가능하며 내부 프로토콜 점검이 필요하지 않아 HTTP에 국한되지 않는다. RFC 7239는 `X-Forwarded-For` HTTP 헤더와 유사한 목적을 가지면서 더 많은 기능을 가진 `Forwarded` HTTP 헤더를 표준화했다.[4] `Forwarded` 헤더의 구문 예시는 다음과 같다.
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
Forwarded: for="[2001:db8::1234]"
HAProxy는 `X-Forwarded-For` 또는 `Forwarded` 헤더를 사용하지 않고 발신 클라이언트의 IP 주소를 전달할 수 있는 PROXY 프로토콜을 정의한다.[5] 이 프로토콜은 HTTP뿐만 아니라 여러 전송 프로토콜에서 사용할 수 있으며, 내부 프로토콜을 검사할 필요가 없다.
5. 지원 제품
대부분의 웹 서버는 로그 파일에 X-Forwarded-For 필드에 포함된 IP 주소를 기록하도록 설정할 수 있다.
5. 1. 프록시 서버 및 캐시 엔진
X-Forwarded-For 필드는 Squid[7][8], Apache mod_proxy[9] (\IHS 포함[10]), Pound[11], HAProxy[12], Varnish Cache[13], IronPort Web Security Appliance, CAI Networks WebMux, 어레이 네트웍스, Radware's Appdirector and Web Server Director, F5 Big-IP[15], Blue Coat ProxySG[16], Cisco 캐시 엔진, McAfee Web 게이트웨이, Phion Airlock, Finjan Vital Security, NetApp NetCache, jetNEXUS, Crescendo Networks Maestro, Microsoft ISA Server 2004/2006 (ISA 서버용 Winfrasoft X-Forwarded-For 탑재)[19], Winfrasoft X-Forwarded-For Microsoft 및 Forefront TMG 2010 (프리 웹 필터 TMG 또는 XFF-Filter.dll)[20] 등 다양한 프록시 서버 및 캐시 엔진에서 지원되며, Apache 등의 웹 서버와 연동될 수 있다.
X-Forwarded-For 필드 기록 기능은 Microsoft IIS 6.0 및 7.0에서 "Winfrasoft X-Forwarded-For for IIS" (서드 파티 ISAPI 필터) 또는 "HTTP Module" (서드 파티 필터)를 통해 지원된다.[21]
5. 2. 로드 밸런서
5. 3. 웹 서버
많은 웹 서버는 로그 파일에 `X-Forwarded-For` 필드에 포함된 IP 주소를 기록하도록 설정할 수 있다. 아파치 HTTP 서버에서는 표준 기능으로 구현되어 있으며, 설정을 변경하는 것만으로 로그에 기록하게 된다[15][30][31][32]。마이크로소프트 IIS는 서드 파티 애플리케이션이 필요하다[33]。IIS7용으로는 IIS.net 웹사이트에서 IIS 로그에 `X-Forwarded-For` 값을 기록하는 무료 IIS 모듈을 구할 수 있다[34]。
6. 한국 인터넷 환경에서의 활용 및 고려사항
(이전 출력이 비어있으므로, 수정할 내용이 없습니다. 원본 소스(`source`)가 제공되어야 'XFF' 문서의 '한국 인터넷 환경에서의 활용 및 고려사항' 섹션 내용을 작성하고, 그 내용을 바탕으로 수정 작업을 진행할 수 있습니다.)
참조
[1]
웹사이트
Overview of parsed mail headers
http://mailheader.ma[...]
2014-05-05
[2]
웹사이트
squid : follow_x_forwarded_for configuration directive
http://www.squid-cac[...]
2017-11-12
[3]
웹사이트
X-Forwarded-For
https://developer.mo[...]
2020-11-06
[4]
IETF
Forwarded HTTP Extension
IETF
2014-06
[5]
문서
Willy Tarreau: The PROXY protocol
http://haproxy.1wt.e[...]
2012-12-24
[6]
웹사이트
X-Forwarded-For Spoofer
https://addons.mozil[...]
addons.mozilla.org
2011-07-08
[7]
문서
Squid configuration directive forwarded_for
http://www.squid-cac[...]
[8]
문서
SquidFaq/ConfiguringSquid
http://wiki.squid-ca[...]
[9]
문서
mod_proxy
http://httpd.apache.[...]
[10]
문서
リバース・プロキシーとしての IHS の構成
http://publib.boulde[...]
[11]
문서
Pound proxy
http://www.apsis.ch/[...]
[12]
문서
HAProxy 設定マニュアル
http://haproxy.1wt.e[...]
[13]
문서
Varnish FAQ
https://varnish-cach[...]
[14]
문서
IronPort Web Security Appliances
http://www.cisco.com[...]
[15]
문서
Apache または PHP で "X-Forwarded-For" を使用する
http://devcentral.f5[...]
[16]
문서
Bluecoat Knowledge Base Article 2996
https://kb.bluecoat.[...]
[17]
문서
Cisco Cache Engine ユーザガイド Version 2.1.0 - Appendix A: Command Reference - グローバル設定コマンド - "http"
http://www.cisco.com[...]
[18]
문서
Web キャッシュを調節 - NetApp NetCache C720
http://www.isp-plane[...]
[19]
문서
TMG, ISA サーバと IIS 向け X-Forwarded-For
http://www.winfrasof[...]
[20]
문서
TMG2010 向け X-Forwarded-For フリー・ウェブフィルター
http://itboard.ro/bl[...]
[21]
문서
IIS7 向け X-Forwarded-For HTTP Module, ソースも提供!
http://devcentral.f5[...]
[22]
문서
VLAN間でのルーティングに利用されるルーターの設定
[23]
문서
Citrix NetScaler Traffic Management Guide - Release 9.1
http://support.citri[...]
[24]
문서
Cisco ACE with Source NAT and Client IP Header
http://www.cisco.com[...]
[25]
문서
Using the X-Forwarded-For HTTP header field to preserve the original client IP address for traffic translated by a SNAT
http://support.f5.co[...]
[26]
문서
LoadMaster Product Manual
http://www.kemptechn[...]
[27]
문서
Equalizer User Guide
http://www.coyotepoi[...]
[28]
문서
relayd.conf manual page
http://www.openbsd.o[...]
[29]
문서
Using IPv6 with Elastic Load Balancing
http://docs.amazonwe[...]
[30]
웹사이트
Extended X-Forwarded-For Logging with Apache
http://www.gadgettra[...]
www.gadgettrail.com
2005-01-11
[31]
문서
LogFormat
[32]
문서
"X-Forwarded-For"ヘッダー情報をIHSアクセス・ログに記録する方法 (NTWK-09-036)
http://www-06.ibm.co[...]
[33]
문서
Winfrasoft X-Forwarded-For for IIS
http://www.winfrasof[...]
[34]
문서
Client-ip not logged on application server when using ARR
http://blogs.iis.net[...]
[35]
웹인용
squid : follow_x_forwarded_for configuration directive
http://www.squid-cac[...]
2017-11-12
[36]
웹인용
RFC 7239 - Forwarded HTTP Extension
https://tools.ietf.o[...]
2015-05-08
[37]
문서
Willy Tarreau: The PROXY protocol
http://haproxy.1wt.e[...]
haproxy.1wt.eu
2012-12-24
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com