-
[HTTP] Header : X-Forwarded-For (XFF)Study/Web 2021. 2. 9. 03:29
X-Forwarded-For (XFF)는 HTTP Proxy (또는 Load Balancers, Caching Server) 등을 통해 웹 서버에 접속하는 클라이언트의 IP 주소를 식별하기 위한 사실상 표준 헤더이다. (표준화된 버전은 HTTP Forwarded Header이다.)
웹 서버(또는 WAS)와 클라이언트 사이에 Proxy Server (또는 Load Balancers, Caching Server) 등의 장비가 있는 경우, 서버 접근 로그는 Proxy Server의 IP만 갖고 있기 때문에 Proxy Server의 IP를 요청한 IP로 인식하게 된다.
이때, X-Forwarded-For 헤더를 통해 웹 프로그램이 실제 요청한 클라이언트의 IP를 파악할 수 있다.[문법]
X-Forwarded-For: <client>, <proxy1>, <proxy2>
여러 프록시들을 거칠 때, IP주소들이 차례로 열거되어 가장 오른쪽의 IP주소는 가장 마지막에 거친 프록시의 IP주소가 된다. 따라서, 첫 번째 IP주소를 통해 클라이언트 IP주소를 식별할 수 있다.Apache나 Nginx에서 X-Forwarded-For을 사용하기 위해서는 따로 설정해주어야 한다.
# Apache
기본 로그 포맷은 %h로 Remote Address를 사용하는데 이를 %{X-Forwarded-For}i를 사용하도록 수정해주어야 한다.LogFormat "%h %l %u %t \"%r\" %>s %b" common
↓
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common# Nginx
nginx.conf에 아래 구문을 추가하여 설정해주어야 한다.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
[참고] https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/[Reference]
- developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For
X-Forwarded-For - HTTP | MDN
X-Forwarded-For (XFF) 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드
developer.mozilla.org
- www.lesstif.com/software-architect/proxy-client-ip-x-forwarded-for-xff-http-header-20775886.html
Proxy(프락시) 환경에서 client IP 를 얻기 위한 X-Forwarded-For(XFF) http header
X-Real-IP 헤더를 사용하는 제품일 경우 %{x-forwarded-for}i 대신 %{x-real-ip}i 사용
www.lesstif.com
'Study > Web' 카테고리의 다른 글
[MongoDB] ObjectId 란? (0) 2021.06.27 [HTTP] Basic Authentication _ .htpasswd (0) 2021.03.08 [PHP] WAF Bypass : Non-Alphabets Code (0) 2021.01.11 PHP 입력 길이 제한 우회 (0) 2021.01.09 댓글