2017-11-05 5 views
1

나는 좋은 트래픽을 발생시키는 웹 사이트를 가지고 있으며 일부 웹 사이트가 프록시로 내 웹 사이트를 클로킹하고 있으며 검색하는 방법에 문제가 있음을 발견했습니다. PHP로 그들을 차단할 수 있습니다.

우선 이 프록시 웹 사이트에 접속하면 echo $_SERVER['HTTP_HOST'] 또는 echo $_SERVER['SERVER_NAME'] 결과가 옳습니다. 내 웹 사이트를 클로킹하는 웹 사이트의 이름을 보여줍니다. 내가

if($_SERVER['HTTP_HOST'] == "proxysite.com" || $_SERVER['SERVER_NAME'] == "proxysite.com"){ 
echo "you got it"; 
} 

을 수행 할 때

는하지만 결과는

if($_SERVER['HTTP_HOST'] == "mywebsite.com" || $_SERVER['SERVER_NAME'] == "mywebsite.com"){ 
    echo "you got it"; 
    } 

후 결과가 이다 할

경우 null 인 '

내가 돈 "당신은 얻었다" 가상 IP 또는 실제 IP 및 SERVER_NAME 또는 HTTP_HOST에 대해 많이 알지 못합니다. 그러나 이것은 나를위한 보안 문제처럼 보이며 Google에서 바로옵니다.

Google에서 내 웹 사이트를 검색하는 모든 사용자는이 프록시 웹 사이트를 찾고 쿠키와 모든 것을 관리하기 때문에이 웹 사이트에 로그인합니다. 나는 그것을 믿을 수 없다. 이러한 종류의 해킹은 2017 년에 매우 쉽고 바보 같은 보안 문제입니다. 아는 한,이 웹 사이트에는 저의 로그인 정보가 모두있을 수 있습니다. 나는 모든 인터넷에서 솔루션을 검색했으며 자바 스크립트였습니다. 나는 그것을했지만 지금 그들은 똑똑 해져서 모든 자바 스크립트 코드를 걸러 내고 제거합니다.

나를 위해 유일한 옵션은 $ _SERVER [ 'HTTP_HOST'] 또는 $ _SERVER [ 'SERVER_NAME'] 마녀가 올바르게 감지되지 않습니다.

나는 모든 솔루션

의 nginx

에 PHP 7.1주세요 실행?

myWebsite.com HEADERS 그들이 진정으로 귀하의 사이트를 프록시하는 경우, 당신은 그들이 '서버의 IP 주소를 결정해야합니다

[USER] => www-data 
[HOME] => /var/www 
[HTTP_CF_CONNECTING_IP] => 3a02:3f0e:5260:664:75fb:bb5a:f2a6:1ea3 
[HTTP_COOKIE] => __cfduid=d7711ced6c319ac0aa615de5f64160b561509570260; 
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,it;q=0.6,ro;q=0.4 
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1 
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
[HTTP_CF_VISITOR] => {"scheme":"https"} 
[HTTP_X_FORWARDED_PROTO] => https 
[HTTP_CF_RAY] => 3b8d9bf459da7ea0-BUD 
[HTTP_X_FORWARDED_FOR] => 3a02:2f0e:3260:664:75fb:bb5a:f2a6:1ea3 
[HTTP_CF_IPCOUNTRY] => RO 
[HTTP_ACCEPT_ENCODING] => gzip 
[HTTP_CONNECTION] => Keep-Alive 
[HTTP_HOST] => mywebsite.com 
[REDIRECT_STATUS] => 200 
[SERVER_NAME] => mywebsite.com 
[SERVER_PORT] => 80 
[SERVER_ADDR] => ******hiden.ip 
[REMOTE_PORT] => 34741 
[REMOTE_ADDR] => ****hiden.ip 
[SERVER_SOFTWARE] => nginx/1.13.6 
[GATEWAY_INTERFACE] => CGI/1.1 
[REQUEST_SCHEME] => http 
[SERVER_PROTOCOL] => HTTP/1.1 
[DOCUMENT_ROOT] => /var/www 
[DOCUMENT_URI] => /index.php 
[REQUEST_URI] =>/
[SCRIPT_NAME] => /index.php 
[CONTENT_LENGTH] => 
[CONTENT_TYPE] => 
[REQUEST_METHOD] => GET 
[QUERY_STRING] => 
[SCRIPT_FILENAME] => /var/www/index.php 
[FCGI_ROLE] => RESPONDER 
[PHP_SELF] => /index.php 
[REQUEST_TIME_FLOAT] => 1509882770.658 
[REQUEST_TIME] => 1509882770 

proxyWbsite.com HEADERS

[USER] => www-data 
[HOME] => /var/www 
[HTTP_CF_CONNECTING_IP] => 3a01:3f8:171:2a4c:0:0:0:2 
[HTTP_COOKIE] => __cfduid=dcad0dcc3004b494316f306212dc195911509878400; 
[HTTP_REFERER] => 
[HTTP_ACCEPT] => */* 
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
[HTTP_CF_VISITOR] => {"scheme":"https"} 
[HTTP_X_FORWARDED_PROTO] => https 
[HTTP_CF_RAY] => 3b8f5486a8196349-FRA 
[HTTP_X_FORWARDED_FOR] => 2a01:4f8:171:3a4c:0:0:0:2 
[HTTP_CF_IPCOUNTRY] => DE 
[HTTP_ACCEPT_ENCODING] => gzip 
[HTTP_CONNECTION] => Keep-Alive 
[HTTP_HOST] => proxywebsite.com 
[REDIRECT_STATUS] => 200 
[SERVER_NAME] => proxywebsite.com 
[SERVER_PORT] => 80 
[SERVER_ADDR] => ***hidden.ip 
[REMOTE_PORT] => 14485 
[REMOTE_ADDR] => ***hidden.ip 
[SERVER_SOFTWARE] => nginx/1.13.6 
[GATEWAY_INTERFACE] => CGI/1.1 
[REQUEST_SCHEME] => http 
[SERVER_PROTOCOL] => HTTP/1.1 
[DOCUMENT_ROOT] => /var/www 
[DOCUMENT_URI] => /index.php 
[REQUEST_URI] =>/
[SCRIPT_NAME] => /index.php 
[CONTENT_LENGTH] => 
[CONTENT_TYPE] => 
[REQUEST_METHOD] => GET 
[QUERY_STRING] => 
[SCRIPT_FILENAME] => /var/www/index.php 
[FCGI_ROLE] => RESPONDER 
[PHP_SELF] => /index.php 
[REQUEST_TIME_FLOAT] => 1509879844.936 
[REQUEST_TIME] => 1509879844 
+0

Niether'HTTP_HOST'도'SERVER_NAME'도 프록시 사용에 대해 알려줄 것입니다. 'Host :'이름은 HTTP 요청 필드입니다.'ServerName :'은 일반적으로 웹 서버 가상 호스트 섹션에 미리 정의 된 이름입니다. – mario

+0

나는 어떻게'SERVER_NAME' 또는'HTTP_HOST'를 울리는 지 이해할 수 없습니다. 올바른 도메인을 잡아서 proxysite.com 도메인과 같고'SERVER_NAME' 또는'HTTP_HOST'를' if statement'가 모두 mydomain.com과 같습니다. –

+0

\t Niether HTTP_HOST도 SERVER_NAME도 프록시 사용에 대해 알려줍니다. 그것은 내가 에코를 사용하는 경우 알려주지 만 IF 문에서는 나에게 말하지 않고 에코와 if 사이의 차이점을 보지 못한다. ECHO에서 SERVER_NAME이 다른 이유는 무엇입니까? –

답변

0

그들을 사용하고 차단하십시오. 귀하의 사이트에 접속하지 못하도록 차단하면 프록시 역할을 할 수 없습니다.

Apache, Nginx 또는 실행중인 웹 서버를보고 로그 파일을 검사하고 동일한 IP에서 온 수많은 요청을 찾은 다음 자신이 있다고 확신 할 때까지 조사해야합니다 누가 그 요청을하고 있는지.

그런 다음 방화벽 수준에서 차단하거나 CloudFlare와 같은 서비스를 사용하여 차단하십시오. CloudFlare와 같은 서비스를 사용하면 비인간적 인 트래픽 양을 모니터링 할 수 있기 때문에 이러한 종류의 문제는 피할 수 있습니다. 그들의 서비스는 무료입니다. https://www.cloudflare.com/security/

+0

과 같습니다. 이미 cloudflare를 실행했고 프록시 웹 사이트는 cloudflare를 실행합니다. 클라우드 플레어에는 ips가 많이 있습니다. –

+0

헤더가 가장 정확하게 내 웹 사이트 헤더입니다. 유일한 차이점은 ip와 server_name 및 HTTP_HOST입니다. Ips는 매번 다릅니다. –

+0

@MihaiGalan 좋습니다. CloudFlare를 사용하는 경우 속도 제한을 설정하여 단일 사이트에서 다른 사이트로 요청을 프록시 할 수 없도록 설정하는 것이 좋습니다. 참조 : https://www.cloudflare.com/rate-limiting/ – jaswrks