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

Дата публикации  Дата изменения16.10.21  Комментарии4   Просмотры9159

Курсы

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

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

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

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

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

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

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

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

Категории

Теги: , ,

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

Рейтинг: 8.8/10 (8)


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

    sergey37

     

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

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

     

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

    Андрей

     

    А поисковые роботы не пострадают от этого – они как раз часто должны обращаться к сайту, чтобы индексировать его. Если поставим этот скрипт он их заблокирует?

    coder hol es

     

    Для гарантии можно исключить нужных ботов. В любом случае, нужно смотреть на логи и прочие моменты конкретного ресурса.
    Можно также выставлять периодичность соответственно допустимой нагрузке, в том числе ботами.
    Варианты всегда есть – анализ, изучение и решение в рамках поставленных условий.


 

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