Ограничение доступа не входящих в диап. IP

Тема в разделе "PHP", создана пользователем pronax, 22 янв 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    Здрасти всем, помогите сделать ограничение по диапозону ИП... тоесть у нас своя сеть, и чтобы из внешки никто залесть не смог...
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Никакого PHP не надо.
    В .htaccess вставить
    Код:
    order allow deny
    deny from all
    allow from Х
    где Х - сеть с маской (192.168.1.0/24)
     
  3. nickspring

    nickspring Писатель

    Регистр.:
    21 авг 2007
    Сообщения:
    3
    Симпатии:
    1
    Или где X вида 192.168.

    (можно часть адреса указывать)
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Вариантов указания адресов множествоhttp://httpd.apache.org/docs/2.0/mod/mod_access.html
     
    pronax нравится это.
  5. pronax

    pronax Постоялец

    Регистр.:
    21 сен 2008
    Сообщения:
    146
    Симпатии:
    10
    пишу так:
    Код:
    order allow deny
    allow from all
    deny from 000.000.000.000 - 082.200.127.255
    082.201.000.000 - 088.204.127.255
    088.205.000.000 - 089.217.255.255
    089.219.000.000 - 092.045.255.255
    092.048.000.000 - 212.019.127.255
    212.019.160.000 - 212.154.127.255
    212.155.000.000 - 255.255.255.255
    пишет ошибка 500....

    делаю для проверки:
    Код:
    order allow deny
    deny from all
    allow from мой ИП
    пишет типо нет доступа... (404 помойму...)

    нужен 1-й код... тоесть закрыть доступ с этих диапозонов IP....

    и ещё, как можно сделать, если доступ закрыт этому IP его на страничку перекидывало(на любую... типо "Ваш IP не из нашей подсети") - вот как-то так...
     
  6. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
    так:
    Где Denny from all - Запрет входа с любого IP
    Allow from 127.0.0.1 - Разрешение входа с IP 127.0.0.1
    ErrorDocument 403 /ban.html - Редирект на ban.html в случае запрета входа по IP
     
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    C таким же успехом ты мог писать "запретить доступ всем кто не в моей локалке" и потом удивляться,а почему же не работает :D
    В мануал трудно заглянуть, ведь и ссылку уже дали?

    1. htaccess не работает с диапазонами так как ты указал - либо целиком подсети, либо указывай маску.
    2. в IP адресах не указываются ведущие нули, то есть 0.10.1.1, а не 000.010.001.001
    3. адреса указываются либо в строку через пробел, либо каждая строка должна начинаться с allow|deny

    Настроить собственную страницу 403 ошибки
    Код:
    ErrorDocument 403 error403.html
     
  8. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    191
    PHP:
    // Для айпи начинающихся с 192
    $ip="192"
    $otherip getIp();
    if(empty(
    $otherip)) die("Ваш IP адрес не определён!"); 
    elseif(
    preg_match("!".preg_quote($ip)."!",$otherip)) 
    die(
    "Ваш IP не из нашей сети!"); 

    // получаем айпи
    function getIp(){
    global 
    $REMOTE_ADDR;
    global 
    $HTTP_X_FORWARDED_FOR$HTTP_X_FORWARDED$HTTP_FORWARDED_FOR$HTTP_FORWARDED;
    global 
    $HTTP_VIA$HTTP_X_COMING_FROM$HTTP_COMING_FROM;
    global 
    $HTTP_SERVER_VARS$HTTP_ENV_VARS;

    // Get some server/environment variables values
    if (empty($REMOTE_ADDR)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['REMOTE_ADDR'])) {
    $REMOTE_ADDR $_SERVER['REMOTE_ADDR'];}
    else if (!empty(
    $_ENV) && isset($_ENV['REMOTE_ADDR'])) {
    $REMOTE_ADDR $_ENV['REMOTE_ADDR'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['REMOTE_ADDR'])) {
    $REMOTE_ADDR $HTTP_SERVER_VARS['REMOTE_ADDR'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['REMOTE_ADDR'])) {
    $REMOTE_ADDR $HTTP_ENV_VARS['REMOTE_ADDR'];}
    else if (@
    getenv('REMOTE_ADDR')) {
    $REMOTE_ADDR getenv('REMOTE_ADDR');}
    // end if
    if (empty($HTTP_X_FORWARDED_FOR)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $HTTP_X_FORWARDED_FOR $_SERVER['HTTP_X_FORWARDED_FOR'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_X_FORWARDED_FOR'])) {
    $HTTP_X_FORWARDED_FOR $_ENV['HTTP_X_FORWARDED_FOR'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) {
    $HTTP_X_FORWARDED_FOR $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'])) {
    $HTTP_X_FORWARDED_FOR $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'];}
    else if (@
    getenv('HTTP_X_FORWARDED_FOR')) {
    $HTTP_X_FORWARDED_FOR getenv('HTTP_X_FORWARDED_FOR');}
    // end if
    if (empty($HTTP_X_FORWARDED)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_X_FORWARDED'])) {
    $HTTP_X_FORWARDED $_SERVER['HTTP_X_FORWARDED'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_X_FORWARDED'])) {
    $HTTP_X_FORWARDED $_ENV['HTTP_X_FORWARDED'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED'])) {
    $HTTP_X_FORWARDED $HTTP_SERVER_VARS['HTTP_X_FORWARDED'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED'])) {
    $HTTP_X_FORWARDED $HTTP_ENV_VARS['HTTP_X_FORWARDED'];}
    else if (@
    getenv('HTTP_X_FORWARDED')) {
    $HTTP_X_FORWARDED getenv('HTTP_X_FORWARDED');}
    // end if
    if (empty($HTTP_FORWARDED_FOR)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_FORWARDED_FOR'])) {
    $HTTP_FORWARDED_FOR $_SERVER['HTTP_FORWARDED_FOR'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_FORWARDED_FOR'])) {
    $HTTP_FORWARDED_FOR $_ENV['HTTP_FORWARDED_FOR'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'])) {
    $HTTP_FORWARDED_FOR $HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED_FOR'])) {
    $HTTP_FORWARDED_FOR $HTTP_ENV_VARS['HTTP_FORWARDED_FOR'];}
    else if (@
    getenv('HTTP_FORWARDED_FOR')) {
    $HTTP_FORWARDED_FOR getenv('HTTP_FORWARDED_FOR');}
    // end if
    if (empty($HTTP_FORWARDED)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_FORWARDED'])) {
    $HTTP_FORWARDED $_SERVER['HTTP_FORWARDED'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_FORWARDED'])) {
    $HTTP_FORWARDED $_ENV['HTTP_FORWARDED'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED'])) {
    $HTTP_FORWARDED $HTTP_SERVER_VARS['HTTP_FORWARDED'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED'])) {
    $HTTP_FORWARDED $HTTP_ENV_VARS['HTTP_FORWARDED'];}
    else if (@
    getenv('HTTP_FORWARDED')) {
    $HTTP_FORWARDED getenv('HTTP_FORWARDED');}
    // end if
    if (empty($HTTP_VIA)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_VIA'])) {
    $HTTP_VIA $_SERVER['HTTP_VIA'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_VIA'])) {
    $HTTP_VIA $_ENV['HTTP_VIA'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_VIA'])) {
    $HTTP_VIA $HTTP_SERVER_VARS['HTTP_VIA'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_VIA'])) {
    $HTTP_VIA $HTTP_ENV_VARS['HTTP_VIA'];}
    else if (@
    getenv('HTTP_VIA')) {
    $HTTP_VIA getenv('HTTP_VIA');}
    // end if
    if (empty($HTTP_X_COMING_FROM)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_X_COMING_FROM'])) {
    $HTTP_X_COMING_FROM $_SERVER['HTTP_X_COMING_FROM'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_X_COMING_FROM'])) {
    $HTTP_X_COMING_FROM $_ENV['HTTP_X_COMING_FROM'];}
    else if (!empty(
    $HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_COMING_FROM'])) {
    $HTTP_X_COMING_FROM $HTTP_SERVER_VARS['HTTP_X_COMING_FROM'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_COMING_FROM'])) {
    $HTTP_X_COMING_FROM $HTTP_ENV_VARS['HTTP_X_COMING_FROM'];}
    else if (@
    getenv('HTTP_X_COMING_FROM')) {
    $HTTP_X_COMING_FROM getenv('HTTP_X_COMING_FROM');}
    // end if
    if (empty($HTTP_COMING_FROM)) {
    if (!empty(
    $_SERVER) && isset($_SERVER['HTTP_COMING_FROM'])) {
    $HTTP_COMING_FROM $_SERVER['HTTP_COMING_FROM'];}
    else if (!empty(
    $_ENV) && isset($_ENV['HTTP_COMING_FROM'])) {
    $HTTP_COMING_FROM $_ENV['HTTP_COMING_FROM'];}
    else if (!empty(
    $HTTP_COMING_FROM) && isset($HTTP_SERVER_VARS['HTTP_COMING_FROM'])) {
    $HTTP_COMING_FROM $HTTP_SERVER_VARS['HTTP_COMING_FROM'];}
    else if (!empty(
    $HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_COMING_FROM'])) {
    $HTTP_COMING_FROM $HTTP_ENV_VARS['HTTP_COMING_FROM'];}
    else if (@
    getenv('HTTP_COMING_FROM')) {
    $HTTP_COMING_FROM getenv('HTTP_COMING_FROM');}
    // end if

    // Gets the default ip sent by the user
    if (!empty($REMOTE_ADDR)) {
    $direct_ip $REMOTE_ADDR;}

    // Gets the proxy ip sent by the user
    $proxy_ip '';
    if (!empty(
    $HTTP_X_FORWARDED_FOR)) {
    $proxy_ip $HTTP_X_FORWARDED_FOR;
    } else if (!empty(
    $HTTP_X_FORWARDED)) {
    $proxy_ip $HTTP_X_FORWARDED;
    } else if (!empty(
    $HTTP_FORWARDED_FOR)) {
    $proxy_ip $HTTP_FORWARDED_FOR;
    } else if (!empty(
    $HTTP_FORWARDED)) {
    $proxy_ip $HTTP_FORWARDED;
    } else if (!empty(
    $HTTP_VIA)) {
    $proxy_ip $HTTP_VIA;
    } else if (!empty(
    $HTTP_X_COMING_FROM)) {
    $proxy_ip $HTTP_X_COMING_FROM;
    } else if (!empty(
    $HTTP_COMING_FROM)) {
    $proxy_ip $HTTP_COMING_FROM;
    // end if... else if...

    // Returns the true IP if it has been found, else FALSE
    if (empty($proxy_ip)) {
    // True IP without proxy
    return $direct_ip;
    } else {
    $is_ip ereg('^([0-9]{1,3}\.){3,3}[0-9]{1,3}'$proxy_ip$regs);
    if (
    $is_ip && (count($regs) > 0)) {
    // True IP behind a proxy
    return $regs[0];
    } else {
    // Can't define IP: there is a proxy but we don't have
    // information about the true IP
    return FALSE;}
        } 
    // end if... else...
    // end of the 'getIp()' function
     
  9. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    Вообще-то такие вещи делаются админами сети через фаервол вроде iptables. Как сделать - на sysadmins.ru примеров масса.
     
  10. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Решать данную задачу при помощи PHP - всё равно что палить из пушки по воробьям :D
     
Статус темы:
Закрыта.