본문 바로가기
웹프로그램

프록시 proxy 접속자 실제 아이피 ip 확인 가능

by 세이박스 2008. 11. 19.

Proxy (프록시, 프락시....) 란?
전화 회선을 이용한 모뎀을 사용하던 시절 빠른 회선을 이용하기 위해 특정 프록시 서버를 경유해서 빠른 속도로 인터넷을 이용하기 위한 목적으로 주로 이용 했었습니다. 또는 아이피가 부족한 경우 내부 망은 사설아이피로 이용하고 외부로 접속할땐 프록시 아이피를 통해서 인터넷에 접속하기 위한 용도가 주 목적 이었습니다. 2번째 목적은 아직도 많은 곳에서 이용하고 있구요 따라서 무조건 프록시를 이용해서 접속한다고 해서 불순한 접속은 아니라는 것입니다. 주의!
그러나, 어느 분야에서나 그렇듯 불순한 의도를 가진 이들에 의해 악용 되기도 하였습니다.
한 예로 프록시를 그쳐서 웹사이트를 접속 할 경우 웹사이트에서 remote_addr 로 IP를 추출할경우 접속자의 실제 아이피가 아닌 프록시 아이피가 기록이 남아서 공격을 해도 프록시 아이피만 차단하게되는 경우가 있었습니다. 그럼, 다시 공격자는 다른 프록시 IP를 이용하는 뭐 지금 생각하면 웃음이 나오는 이야기지만 예전엔 그런 일들이 많았답니다.
아마 요즘도 뒤늦게 프록시라는걸 접하게되어 아이피 안남겠지라고 생각하며 홈페이지 게시판에 악성댓글을 남기는 그런 유저가 있을겁니다. 당연 큰실수를 하는 것 일테죠~ 좀 규모 있는 사이트들은 프록시로 접속을 하던 말던 접속자의 실제 아이피를 모두 기록남기고 있답니다. ^^;
물론 소규모 사이트들은 단순히 remote_addr로만 아이피를 기록을 남기는 경우가 있어 통할지도 모르겠습니다.

어쨌거나 세이박스는 이러한 접속을 막기위한 방법을 제시하고자 하는것이니 프록시에 대한 에피소드는 접기로 하고 실제 적용 방법에 대해 설명하고자 합니다. 조금이나마 도움이 되길 바라며..

PHP의 경우
1. 당신의 IP 는 다음과 같습니다.<br>
IP => <?=$_SERVER['REMOTE_ADDR']?><br>
2. 당신이 프락시 IP로 접속했다면 다음에 IP가 표시되며 실제 당신의 IP 주소 입니다<br />
IP => <?=$HTTP_X_FORWARDED_FOR?><br>

위 소스에서 HTTP_X_FORWARDED_FOR는 프록시를 이용할 경우 HTTP 헤드 값에 함께 포함해서 전송하기 때문에 프록시를 이용할 경우 프록시 아이피를 출력하게 됩니다. 하지만 평소 프록시를 이용하지 않는다면 아무런 값이 출력되지 않죠.
따라서 다음과 같이 응용해서 이용하시면 됩니다.

if($HTTP_X_FORWARDED_FOR != "") {
  echo $HTTP_X_FORWARDED_FOR;
} else {
  echo $_SERVER['REMOTE_ADDR'];
}

이런식으로 해두면 프록시로 접속하던 일반 IP로 접속하던 실제 접속자의 IP가 기록이 남습니다.
그러나, 당연히 공격자들이 나 잡아가슈 하며 접속하진 않겠죠! 바로 프록시를 여러번 경우 하는것 입니다. 이부분 다음에 글을 남기도록 하겠습니다.

ASP의 경우
asp 경우에도 마찬가지로 HTTP_X_FORWARDED_FOR 값으로 동일하게 값을 받습니다. 앞에 $ 붙고 않붙고 차이 정도 ^^
그리고 HTTP_CLIENT_IP 로도 접속자의 실제 아이피를 출력합니다.

이 글은 세이박스에서 작성한 글입니다. 다른곳에 글을 올리실땐 반드시 출처를 남기시기 바랍니다.
출처 : 세이박스 http://saybox.tistory.com/501