2009-06-16 3 views
3

나는 내 사이트에 로그인하는 사람들이 프록시를 사용하고 있는지 여부를 어떻게 확인할 수 있는지 알아 내려고하고있다. 필자는 embeddable 객체 (Flash 및 Java)를 통해 사람의 실제 IP 주소를 감지 할 수 있다는 것을 읽었습니다. 그러나 실제로 어떤 예제 나 소스를 찾을 수 없었습니다.사용자가 프록시를 사용하고 있는지 여부 확인하기

PHP를 사용하고 있는데 $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_CLIENT_IP'] 등이 대부분의 프록시를 탐지하지만 지금까지는 TOR로 테스트 할 수 없었습니다. (아마도 TOR에 플래그를 지정하지 않았지만 익명의 프록시가 여전히 HTTP_X_FORWARDED으로 표시됨을 읽었습니다. 가능하다면 자바 서블릿으로 시도하고 싶습니다. 아무도 올바른 방향으로 나를 가리킬 수 있습니까? (예를 들면?) 나는 ha.ckers.org에서 몇 가지 코드를 보았지만 클라이언트 측만 보여 주었고 서버 측은 보여주지 않았습니다.

+0

내가 물어볼 수있는 질문은 무엇입니까? 왜 프록시 사용자를 감지하려고합니까? 연결 사용의 몇 가지 가능한 차이점 (네트워크 사용 공간)을 제외하고는 별 문제가되지 않습니다. – benc

답변

5

TOR은 X_FORWARDED_FOR와 같은 서버 헤더를 제공하지 않으므로 알려진 모든 종료 노드 목록을 사용하는 것이 가장 좋습니다. 목록은 https://torstat.xenobite.eu/에서 찾을 수 있습니다.

다른 프록시의 경우 서버 헤더를 볼 수 있습니다. 관심의 가능한 서버 헤더는 다음과 같습니다

HTTP_VIA 
HTTP_X_FORWARDED_FOR 
HTTP_FORWARDED_FOR 
HTTP_X_FORWARDED 
HTTP_FORWARDED 
HTTP_CLIENT_IP 
HTTP_FORWARDED_FOR_IP 
VIA 
X_FORWARDED_FOR 
FORWARDED_FOR 
X_FORWARDED FORWARDED 
CLIENT_IP 
FORWARDED_FOR_IP 
HTTP_PROXY_CONNECTION 

는 PHP에서, 당신은 $_SERVER[] superglobal에서 이러한 필드의 값을 얻을 수 있습니다.

+0

아, 좋아. 그 목록 및 기타 정보를 보내 주셔서 감사합니다. – ravun

1

옵션 인 경우 https를 사용해보세요. 그런 다음 사용자 IP가 표시되어야합니다. 그러나 SSL 프록시 뒤의 사무실 사용자에 대해서는 알지 못합니다.

1

Java 애플릿이나 Flash가 클라이언트 IP를 누출하지 않습니다. 이전 버전의 Flash에는 보안 결함이있어이를 가능하게했습니다. 아마 지금까지 패치가 적용되었을 것입니다.

나는 TOR을 사용한 적이 없지만 읽은 바에 따르면 일종의 VPN으로 구현되어있어 브라우저가 전혀 인식하지 못합니다.

사용자가 프록시를 사용하고 있는지 알아야하는 이유는 무엇입니까?

+0

오, 나는 Flash 9.0 이후에 Flash로 인한 문제가 변경되었다는 것을 알아 차렸습니다. 나는 스패머를 금지 할 때 프록시로 새 계정을 만들 수 없도록 내가 만든 게임에서 프록시를 사용하지 못하도록하고 싶습니다. 나는 그것이 어리석은 증거가 아닐 것이라는 것을 안다.하지만 좀 더 어렵게 만들고 싶다. – ravun

2

다음 헤더 필드를 찾으려면 일부 프록시를 사용해야합니다.

VIA 
FORWARDED 
USERAGENT_VIA 
X_FORWARDED_FOR 
PROXY_CONNECTION 
XPROXY_CONNECTION 
HTTP_PC_REMOTE_ADDR 
HTTP_CLIENT_IP 

TOR 차단의 경우 iptables를 사용하여 TOR 종료 노드를 차단하는 것이 가장 좋습니다.

그리고 진짜 클라이언트 ip를 보내는 페이지에 플래시 나 자바를 삽입하는 것과 같은 "반 악의적 인"것들을 시도해 볼 수 있다면 꼭해야합니다. 하지만 그 범위는 제한되어 있습니다. 예를 들어, 그가있는 경우 로컬 IP를 얻을 수 있습니다. LAN에 192.168.1.x와 같은 것을 얻을 수 있습니다.

+0

그 헤더에 대해 들었지만 PHP에서 $ _SERVER 슈퍼 글로벌에서 액세스하려고 시도하는 것이 도움이되지 않습니다. 나는 $ _SERVER superglobal에서 아직 그 인덱스를 보지 못했지만 TOR 만 사용 했으므로 아마 다를 것입니다. 지금까지 내가 아는 한 TOR은 익명 프록시이며 X_FORWARDED_FOR 플래그가 있어야하지만 테스트에서 아무것도 표시되지 않았습니다. – ravun

+1

오 대단합니다. HTTP_ prepended와 복제 된 내 헤더를 가진 똑같은 대답은 광산이 승인을 받음을 의미합니까 ?? – jitter

관련 문제