И нужно ваше мнение на этот счет.
Защита от флуда такая:
function antiflood($range) {
//Устанавливаем last_hot_link счетчик
$_SESSION['last_hot_link'] = $_SESSION['last_hot_link'] ? $_SESSION['last_hot_link'] : 0;
//Устанавливаем hot_link счетчик
$_SESSION['hot_link'] = $_SESSION['hot_link'] ? $_SESSION['hot_link'] : 0;
//Время последнего перехода
$_SESSION['time_stamp'] = !$_SESSION['time_stamp'] ? microtime(1) : $_SESSION['time_stamp'];
if (($_SESSION['time_stamp']+$range) > microtime(1)) {
//Количество хотлинков (переходов с узким промежутком времени)
$_SESSION['hot_link'] = $_SESSION['hot_link'] ? ($_SESSION['hot_link']+1) : 1;
//Последний хотлинк
$_SESSION['last_hot_link'] = microtime(1);
//Обновляем штамп времени
$_SESSION['time_stamp'] = time();
} else {
//Последний хотлинк - обнуляем
$_SESSION['hot_link'] = ($_SESSION['last_hot_link']+120) < microtime(1) ? 0 : $_SESSION['hot_link'];
//Обновляем штамп времени
$_SESSION['time_stamp'] = time();
}
if ($_SESSION['hot_link'] > 30) {
//Постоянно обновляем хотлинки
$_SESSION['last_hot_link'] = microtime(1);
//Перенаправляем на статическую страницу
reUrl('/flood/');
}
$range - если время перезагрузки страниц или перехода по ним меньше этого, то переход считается флудом.
И в случае если накапало более 30 хотлинков, пользователь перенаправляется через правило .htaccess -
RewriteRule ^flood/$ /antidos.htm [R=301,L]
где antidos.htm - статическая страничка не несущая нагрузки.
Также если установлен mod_evasive на сервере, он тоже подключен в .htaccess
И если mod_evasive подключен, дос/ддос длится максимум 10 минут (от интенсивности зависит), а потом Service Unavailible.