Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt blokujący wejścia do strony przez proxy
Forum PHP.pl > Forum > Gotowe rozwiązania
karolski
Mam problem jak napisać skrypt który blokuje dostęp do strony przez proxy i zeby jeszcze jak napisać skrypt który blokuje wszystki IP bez niektórych IP questionmark.gifquestionmark.gif
Speedy
Cytat
jak napisać skrypt który blokuje wszystki IP bez niektórych IP questionmark.gifquestionmark.gif


A tak:

  1. <?php
  2. $ip=file(&#092;"ip.txt\"); // plik \"ip.txt\" , to plik z dozwolonymi IP w oddzielnych liniach
  3. foreach($ip as $v) {
  4. if(trim($v)==$REMOTE_ADDR) {
  5.  
  6. echo &#092;"Zawartosc strony\";
  7.  
  8. }else {
  9.  
  10. echo &#092;"Dostęp zabroniony\";
  11.  
  12.  }
  13. }
  14.  
  15. ?>


Cytat
jak napisać skrypt który blokuje dostęp do strony przez proxy


Możesz np. zabanować IP z odpowiednich proxów (ale wtedy, ktoś sobie może zmienić proxy tongue.gif ) . To raczej utopijna idea...

Pozdrawiam.

cya.
dr_bonzo
Niestety algorytm jest zly: jesli pierwszy adres z pliku bedzie rozny od IP usera to zostanie on zablokowany.

  1. <?php
  2. // (...)
  3. $access = FALSE;
  4. foreach( $ip as $v )
  5. {
  6.  if ( trim( $v ) == $_SERVER[ 'REMOTE_ADDR' ] )
  7.  {
  8. $access = TRUE;
  9. break;
  10.  }
  11. }
  12.  
  13. if ( $access )
  14. {
  15.  // wpusc
  16. }
  17. else
  18. {
  19. // blokuj
  20. }
  21.  
  22. ?>
karolski
dzięki bardzo smile.gif to dr_bonzo dziła super, teraz myśle nad zablokowaniem dostepu przy uzyciu proxy jak cos znajde to sie tym podziele tongue.gif
crash
Jeśli proxy nie ukrywa swojej obecności to łatwo je wykryć. Przejżyj wysłane nagłówki.
karolski
  1. <?php
  2.  
  3. function get_remote_addr () {
  4.   if(isset($_SERVER[&#092;"REMOTE_ADDR\"])) {
  5.     return $_SERVER[&#092;"REMOTE_ADDR\"];
  6.   } elseif (isset($HTTP_SERVER_VARS[&#092;"REMOTE_ADDR\"])) {
  7.     return $HTTP_SERVER_VARS[&#092;"REMOTE_ADDR\"];
  8.   } elseif (getenv(&#092;"REMOTE_ADDR\")) {
  9.     return getenv(&#092;"REMOTE_ADDR\");
  10.   } else {
  11.     return &#092;"none\";
  12.   }
  13. }
  14.  
  15.  
  16. function get_x_forwarded () {
  17.   if(isset($_SERVER[&#092;"HTTP_X_FORWARDED_FOR\"])) {
  18.     return $_SERVER[&#092;"HTTP_X_FORWARDED_FOR\"];
  19.   } elseif (isset($HTTP_SERVER_VARS[&#092;"HTTP_X_FORWARDED_FOR\"])) {
  20.     return $HTTP_SERVER_VARS[&#092;"HTTP_X_FORWARDED_FOR\"];
  21.   } elseif (getenv(&#092;"HTTP_X_FORWARDED_FOR\")) {
  22.     return getenv(&#092;"HTTP_X_FORWARDED_FOR\");
  23.   } else {
  24.     return &#092;"none\";
  25.   }
  26. }
  27.  
  28.  
  29. function get_ip() {
  30.   $client_ip = get_client_ip();
  31.   $x_forwarded = get_x_forwarded();
  32.   $remote_addr = get_remote_addr();
  33.   if (isset($client_ip) && !eregi(&#092;"none\", $client_ip) && !eregi(\"unknown\", $client_ip)) {
  34.     return $client_ip;
  35.   } elseif (isset($x_forwarded) && !eregi(&#092;"none\", $x_forwarded) && !eregi(\"unknown\", $x_forwarded)) {
  36.     return $x_forwarded;
  37.   } elseif (isset($remote_addr) && !eregi(&#092;"none\", $remote_addr) && !eregi(\"unknown\", $remote_addr)) {
  38.     return $remote_addr;
  39.   } else {
  40.     return &#092;"none\";
  41.   }
  42. }
  43.  
  44. function get_client_ip () {
  45.   if(isset($_SERVER[&#092;"HTTP_CLIENT_IP\"])) {
  46.     return $_SERVER[&#092;"HTTP_CLIENT_IP\"];
  47.   } elseif (isset($HTTP_SERVER_VARS[&#092;"HTTP_CLIENT_IP\"])) {
  48.     return $HTTP_SERVER_VARS[&#092;"HTTP_CLIENT_IP\"];
  49.   } elseif (getenv(&#092;"HTTP_CLIENT_IP\")) {
  50.     return getenv(&#092;"HTTP_CLIENT_IP\");
  51.   } else {
  52.     return &#092;"none\";
  53.   }
  54. }
  55.  
  56.  
  57.  
  58.   $proxy0 = get_ip();
  59.   $proxy1 = get_client_ip();
  60.   $proxy2 = get_x_forwarded();
  61.   $proxy_host = @getHostByAddr($proxy0);
  62.   if($proxy1 != &#092;"none\" OR $proxy2 != \"none\" OR stristr($proxy_host,\"proxy\")) {
  63.     $display_page = &#092;"Masz proxy wyjdz\";
  64.     die($display_page);
  65.   } else {
  66.         print 'Strona tongue.gif';
  67.                 }
  68.  
  69.  
  70. ?>
Wg mnie to powinno działać ale nie mam jak przetestować jeżeli ktoś ma proxy to niech wejdzie tutaj: http://karol.ka.funpic.de/proxy.php powinno mu się wyświtlić : Masz proxy wyjdz


EDIT:


SKRYPT DZIAŁA wykrywa bez problemu proxy smile.gif
mund
a ja przechodzę przez proxy i mnie nie wykryło aarambo.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.