나는 좋은 트래픽을 발생시키는 웹 사이트를 가지고 있으며 일부 웹 사이트가 프록시로 내 웹 사이트를 클로킹하고 있으며 검색하는 방법에 문제가 있음을 발견했습니다. 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
Niether'HTTP_HOST'도'SERVER_NAME'도 프록시 사용에 대해 알려줄 것입니다. 'Host :'이름은 HTTP 요청 필드입니다.'ServerName :'은 일반적으로 웹 서버 가상 호스트 섹션에 미리 정의 된 이름입니다. – mario
나는 어떻게'SERVER_NAME' 또는'HTTP_HOST'를 울리는 지 이해할 수 없습니다. 올바른 도메인을 잡아서 proxysite.com 도메인과 같고'SERVER_NAME' 또는'HTTP_HOST'를' if statement'가 모두 mydomain.com과 같습니다. –
\t Niether HTTP_HOST도 SERVER_NAME도 프록시 사용에 대해 알려줍니다. 그것은 내가 에코를 사용하는 경우 알려주지 만 IF 문에서는 나에게 말하지 않고 에코와 if 사이의 차이점을 보지 못한다. ECHO에서 SERVER_NAME이 다른 이유는 무엇입니까? –