Если к Вашему сайту идет слишком много обращений от какого-либо компьютера (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 атак.
Комментарии:
sergey37#
через инклюдинг будет схема работать?
coder.hol.es /* Админ */#
Да, конечно — вставлять нужно в самом верху нужной страницы/шаблона (до DOCTYPE), но после объявления headerов, если они есть. Если на странице/шаблоне уже есть объявление начала сессии, то во включаемом коде ее можно убрать. Код должен тогда подключаться после ее объявления.
Андрей#
А поисковые роботы не пострадают от этого – они как раз часто должны обращаться к сайту, чтобы индексировать его. Если поставим этот скрипт он их заблокирует?
coder hol es#
Для гарантии можно исключить нужных ботов. В любом случае, нужно смотреть на логи и прочие моменты конкретного ресурса.
Можно также выставлять периодичность соответственно допустимой нагрузке, в том числе ботами.
Варианты всегда есть – анализ, изучение и решение в рамках поставленных условий.