1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Анти ddos скрипты

Тема в разделе "Софт [Все программы]", создана пользователем ErrorNick, 2 авг 2012.

  1. TopicStarter Overlay
    ErrorNick

    ErrorNick

    Регистрация:
    6 июл 2012
    Сообщения:
    126
    Симпатии:
    55
    Код вставляем в самое начало index, в корне создаем папку tmp с правами 777

    * Модуль antioverload
    • *--------------------------------------------------------
    • * Модуль предназначен для ограничения доступа к сайту или
    • * к страницам, где он включён.
    • * Принцип работы в том, что запоминается ip-адрес и время
    • * обращения с этого адреса. И если в течение заданного
    • * времени происходит обращение с того же адреса, то ему
    • * выдаётся ошибка 503.
    • * Модуль необходимо подключать к скрипту самым первым.
    • * Этим обеспечивается быстрота его работы.
    Код вставляем в самое начало index, в корне создаем папку tmp с правами 777

    * Модуль antioverload
    *--------------------------------------------------------
    * Модуль предназначен для ограничения доступа к сайту или
    * к страницам, где он включён.
    * Принцип работы в том, что запоминается ip-адрес и время
    * обращения с этого адреса. И если в течение заданного
    * времени происходит обращение с того же адреса, то ему
    * выдаётся ошибка 503.
    * Модуль необходимо подключать к скрипту самым первым.
    * Этим обеспечивается быстрота его работы.


    Код:
    <?php
    /*
    *--------------------------------------------------------
    * Модуль antioverload
    *--------------------------------------------------------
    * Модуль предназначен для ограничения доступа к сайту или
    * к страницам, где он включён.
    * Принцип работы в том, что запоминается ip-адрес и время
    * обращения с этого адреса. И если в течение заданного
    * времени происходит обращение с того же адреса, то ему
    * выдаётся ошибка 503.
    * Модуль необходимо подключать к скрипту самым первым.
    * Этим обеспечивается быстрота его работы.
    *--------------------------------------------------------
    */
     
    /* Время задержки в секундах */
    $ad_delay=2;
    /* Путь к папке с временными файлами. Должен существовать */
    $ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp';
     
    /*
    *---------------------------------------------------------
    * Список поисковых роботов.
    * Очень не хорошо, если поисковый робот будет натыкаться
    * на ошибки на сайте. Ему это может сильно не понравиться.
    * Поэтому пишем список юзер-агентов роботов; добавляем или
    * удаляем, что нужно.
    *---------------------------------------------------------
    */
    $ad_Robots_UserAgent=array(
    'aipbot',
    'Aport',
    'eStyleSearch',
    'Gigabot',
    'Gokubot',
    'Google',
    'MJ12bot',
    'msnbot',
    'PlantyNet_WebRobot',
    'StackRambler',
    'TurtleScanner',
    'Yahoo',
    'Yandex',
    'YaDirectBot',
    );
    /*
    *---------------------------------------------------------
    * Список доверенных IP.
    *---------------------------------------------------------
    */
    $ad_good_ip = array(
    '217.107.36.73',
    );
     
    /*
    *----------------------------------------------------------
    * Функция создаёт в указанной директории файл, начинающийся
    * с буквы a (для отличия от других возможных файлов) и
    * содержащий в имени ip-адрес клиента.
    *----------------------------------------------------------
    */
    function ad_WiteIP($dir){
    $f=fopen($dir.'/a'.$_SERVER['REMOTE_ADDR'], 'w');
    fclose($f);
    }
    /*
    *----------------------------------------------------------
    * Проверка на наличие в поле HTTP_USER_AGENT чего-нибудь из
    * вышенаписанного списка.
    *----------------------------------------------------------
    */
    $ad_IsRobot=false;
    foreach ($ad_Robots_UserAgent as $match){
    if (strstr($_SERVER['HTTP_USER_AGENT'], $match)){
    $ad_IsRobot=true;
    break;
    }
    }
    if( in_array($_SERVER['REMOTE_ADDR'], $ad_good_ip) ) {
    $good_ip = true;
    } else {
    $good_ip = false;
    }
    /*
    *---------------------------------------------------------
    * Поисковые роботы не любят, когда к адресу страницы
    * добавляется переменная сессии. Поэтому, если на сайте
    * используются сессии, то их лучше включать, если агент -
    * не робот.
    * Если сессии не используются, то этот кусок можно убрать.
    *---------------------------------------------------------
    */
    if (!$ad_IsRobot AND !$good_ip){
    session_start();
    }
     
    if (!$ad_IsRobot AND !$good_ip){
    /*** Чтение каталога и удаление старых файлов ***/
    $ad_dir =opendir($ad_DirName)
    or die('Отсутствует директория для временных файлов');
    $ad_now =time();
    $ad_forbid =$ad_now-$ad_delay;
    /* IP-адрес в имени файла, начинающегося на букву a,
    а время обращения - время изменения файла */
    while (false!==($ad_FName=readdir($ad_dir))){
    if (ereg('^a[1-9]',$ad_FName)
    && (@ filemtime($ad_DirName.'/'.$ad_FName)<$ad_forbid)){
    @ unlink($ad_DirName.'/'.$ad_FName);
    }
    }
    closedir($ad_dir);
    /*** Проверка на существование пометки
    о недавнем обращении с данного ip-адреса ***/
    if (file_exists($ad_DirName.'/a'.$_SERVER['REMOTE_ADDR'])){
    /* Если обращение было недавно, то выводим сообщение об ошибке */
    header('HTTP/1.0 503 Service Unavailable');
    header('Status: 503 Service Unavailable');
    header('Retry-After: '.$ad_delay*3);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Ошибка 503</title>
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
    </head>
    <body>
    <h1>Ошибка 503 (Service Unavailable)</h1>
    <p>Сервер не может в данный момент выдать запрашиваемую Вами страницу.
    Попробуйте вызвать эту страницу позже (клавиша F5).</p>
    </body>
    </html>
    <?php
    ad_WiteIP($ad_DirName); // Перед выходом записываем ip
    exit;
    }else{
    ad_WiteIP($ad_DirName);
    }
    }
    ?>
     
    Метки:
  2. TopicStarter Overlay
    ErrorNick

    ErrorNick

    Регистрация:
    6 июл 2012
    Сообщения:
    126
    Симпатии:
    55
    Пздц дыра в верху :D
     
  3. bmw

    bmw Гость

    В скрипте дырка есть
     

Поделиться этой страницей

Загрузка...