php Защита сайта от слишком частого обращения 

Дата публикации  Дата изменения25.01.15  Комментарии2   Просмотры2247

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

Для защиты своего сайта от большого количества обращений можно воспользоваться простым, но довольно эффективным методом, основанным на сессиях.

В самом начале всех страниц Вашего сайта, которые будем защищать от слишком частого обращения, необходимо установить следующий код:

 <?php
// объявляем работу с сессиями
session_start();
// указываем папку, куда будет сохраняться информация сессий
session_save_path($_SERVER["DOCUMENT_ROOT"]."/log/session");
// устанавливаем защиту по IP (сессии) не чаще, чем раз в две секунды.
if (isset($_SESSION[telecod_ip])) {
    $t = ((int)((time()-$_SESSION[telecod_ip])));
    if($t < 2) die("Нельзя обращаться к сайту чаще, чем 1 раз в две секунды!");
}
$_SESSION[telecod_ip]=time();
?>

Скрипт записывает время последнего обращения к странице сайта для каждого посетителя. При повторном обращении проверяет, через какой интервал времени было это повторное обращение. Если повторное обращение было менее указанного в скрипте интервала (в данном случае это две секунды), то страничка не обновится, а будет показано соответствующее сообщение.

Если происходит обращение к страницам сайта с интервалом менее двух секунд, то в результате вместо обновленной странички появится надпись "Нельзя обращаться к сайту чаще, чем 1 раз в две секунды!".

Способ можно рассматривать как простейшую защиту сайта от ddos атак.

Бесплатные курсы

Категории

Теги: , ,

Оцените материал:

Рейтинг: 10.0/10 (4)


КомментарииКомментарии:

    sergey37

     

    через инклюдинг будет схема работать?

    coder.hol.es /* Админ */

     

    Да, конечно — вставлять нужно в самом верху нужной страницы/шаблона (до DOCTYPE), но после объявления headerов, если они есть. Если на странице/шаблоне уже есть объявление начала сессии, то во включаемом коде ее можно убрать. Код должен тогда подключаться после ее объявления.


Поля, обозначенные как *, обязательны.





Максимальная длина сообщения 900 символов. Осталось   символов

 

Старые →← Новые