безопасность — формула PHP для предотвращения превышения http запросов с IP

Я собираюсь запретить хакерам сканировать страницы моего веб-сайта, я изобрел формулу для контроля средних посещений за промежуток времени, это лучшее решение?

function exceeded(){
$limit=5;
$span=15;
$now=time();
if($now-$_SESSION['lastDate']>=$span){
$_SESSION['lastDate']=$now;
$_SESSION['totalHits']=1;
return false;
}
$_SESSION['totalHits']=($_SESSION['totalHits']*($span-($now-$_SESSION['lastDate'])))/$span;
$_SESSION['totalHits']+=1; // Adds current Hit
if($_SESSION['totalHits']<=$limit){
$_SESSION['lastDate']=$now;
return false;
}
$_SESSION['lastDate']=$now;
return true;
}
//-----------------------------
if(exceeded()){
echo 'You have exceeded your request limit come back in 15 seconds';
exit;
}

0

Решение

Вы все еще собираетесь выполнять код PHP, который требует ЦП / ОЗУ / … так что лучший способ сделать это — ограничить количество запросов, обрабатываемых сервером. Если вы боитесь DDoSing вашего сервера, попробуйте воспользоваться услугой вроде Cloudflare.

Если вы используете Apache, прочитайте mod_evasive, Пользователи Nginx могут ограничить скорость запросов пройти через.

Почему PHP тоже не очень хороший выбор? Инструмент DDoS не будет хранить куки, и в этот момент вы фактически используете хранилище компьютера вашего клиента, чтобы запоминать его посещения. Если вы действительно хотите сделать это на PHP, вы должны проверить IP пользователя и использовать базу данных его запросов (которая также использует CPU / RAM каждый раз, когда он посещает).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector