Ремонт, сервис, услуги » Как защититься от спамеров и не сильных DDOS атак




Как защититься от спамеров и не сильных DDOS атак


Как защититься от спамеров или спам ботов или есть ли защита сайта от DDOS атак? Вопрос не сказать, что очень актуальный, но некоторую часть интернет сообщества, точнее вебмастеров, интересует. Защита сайта обычным владельцам сайта не так актуальна, как важна тем, у кого на ресурсах содержится доски объявлений, интернет каталоги ссылок или статей и гостевые книги. Также защититься не лишним будет тем, у кого на страницах сайта имеется возможность оставлять комментарии - даже в мощных и хорошо защищённых движках сайтов защита от примитивных ДОС и спамеров срабатывает далеко не всегда.

 




Какие варианты есть?


Противодействие спамерам или DDOS атакам будет считаться правильно сделанным, если атакующие спам боты, будут в момент начала атак на сайт, получать 403 ответ сервера - запрет доступа. При этом нагрузка на сервер будет ничтожная. С несильными DDOS атаками тут, конечно, посложнее будет, но эти DDOS атаки обычные сайты практически не достают по сравнении с проблемами связанными с защитой сайта от спамеров.

 

Второй вариант защиты от примитивных DDOS атак или спамботов заключается в серверном редиректе атакующего. В момент начала атаки на ресурс, атакуемый средствами PHP перенаправляется сервером на сторонний ресурс. Ниже можно посмотреть простые, PHP скрипты защиты от спаматак.

 

Зачем вообще защищаться от DDOS


Чем вообще опасны спамерские атаки на сайт с разных точек зрения? В принципе опасны только мощные DDOS атаки, резко и надолго выводящие сайты из строя, а вот простые спам боты массово заходящие в гости, конечно, не имеют такой разрушительной силы. Но это, как посмотреть?! Защищаться от атак спам ботов однозначно можно и защититься от спамеров, конечно, нужно, и вот почему.

 

Не знаю, как и где, но на моих сайтах, а они располагаются на хостинге Jino, периодически зависал КРОН - это задания по расписанию. Я долго переписывался с техподдержкой, почему вообще у меня часто блокируется КРОН, но они долго сами не могли дать точного и конкретного ответа. А писать им нужно было не только поэтому, но и для того, чтобы их специалисты разблокировали мне зависший КРОН. Много позже, они-то мне и дали ответ о частых причинах зависаний КРОНА - так встал вопрос о защите моих проектов от спамеров, простейших DDOS атак и спам ботов. Итак: мне понадобилось защититься от спам ботов и DDOS атак. Какие у меня есть варианты защиты от спама и спамеров?

 

Сразу же техподдержка подсказала мне простой метод, который я и без них знал, по защите сайта от спамеров и разных ДОС атак - регулярно смотреть в логи посетителей сайта и найдя особо назойливые IP-адреса, просто вписывать их в корневой файл htaccess. Это превосходная защита сайтов от спам ботов, не крупных DDOS атак и вредных спамеров, но имеется одно НО. Такая защита сайта от спамеров не является динамической, как требуется в идеале - это банальная защита сайта уже после акта атаки. Сначала была атака на сайт, следом я посмотрел зловредные IP-адреса спамеров в логах, и только потом вписал их и DDOS спам ботов в файл htaccess. Но зачем нужна такая защита от спамеров и DDOS атак? Динамика то где?

 

Я много рылся в сети, выискивая скрипт, чтобы защититься от спамботов и примитивных ДОС атак, но ничего толкового я не находил. Вся предлагаемая защита от спамеров сводилась к тому самому файлу htaccess. Конечно, меня сей факт не устраивал и я продолжал рыть, рыть, и рыть интернет. В итоге я нашёл, что искал - это были готовые PHP-заготовки (блоки) для тех или иных целей. Посидев день и ночь над скриптами, и подумав, как мне всё это применить для моей конкретной цели защиты от спама, в итоге всё срослось. И теперь защититься от спамеров с их спам ботами можно элементарно. Защита от не сильных DDOS атак также может быть выполнена ниже предлагаемыми мной PHP скриптами. Вариантов исполнения скриптов три, эффект защиты сайта первыми двумя примерно одинаков, у третьего - много мощнее. Разницу я выше по тексту описывал.

 


 

Защита эмуляцией 503-го ответа сервера

 

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

 

 

<?php

// доверенные имена ботов
if (stristr($_SERVER['HTTP_USER_AGENT'], 'Yandex')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Google')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Aport')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'bingbot')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Yahoo')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSNBot')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mail.RU')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Rambler')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Slurp')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Scooter')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Teoma')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'ia_archiver')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Lycos')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'WebAlta')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'CNCat')) {$bbots="good";}
elseif (stristr($_SERVER['REMOTE_ADDR'], '94.202.264.34')) {$bbots="good";} // это какой-нибудь доверенный
// IP адрес, если такового нет, то строчку можно закомментировать

else {
// Запускаем сессии
session_start();

// session_save_path($_SERVER["DOCUMENT_ROOT"]."session");
// указываем папку session, куда будет сохраняться информация сессий, её нужно положить в корень сайта
// Но данная строчка, как правило не нужна, так как на хостингах есть, где хранить сессии автоматом


$time = microtime(1); // получаем текущее (последнее) время в сессии с 3-4 знака после запятой

if (!isset($_SESSION["telecod_ip"])) // проверка, что переменная telecod_ip не определена в сессии
{
$_SESSION["telecod_ip"] = array(); // если не определена, тогда добавляем сессию в пустой массив
// или можно в массив занести максимально разрешённое число посещений в секунду: array(0,0,0)
// сколько будет нулей, значит, столько разрешено посещений в секунду. Оба варианта идентичны.

}
$min_time = min($_SESSION["telecod_ip"]);
// это предпоследнее значение времени в сессии с минимум 4-мя знаками после запятой

$interval = $time - $min_time; // получаем интервал времени между двумя ближайшими посещениями

if ($interval <= 1) // сравниваем минимальный временной интервал в секундах между двумя
// ближайшими посещениями с заданной цифрой (секунды)
{
// если условие верное, тогда спамботу выводится сообщение эмуляции 503 ответа сервера
header('HTTP/1.1 503 Service Temporarily Unavailable');
echo("<h1 align=center>Error: 503, сайт не доступен</h1>");

// проверка в файле на дубли юзер-агентов в записях
if(stristr(file_get_contents("11111.txt"), $_SERVER['HTTP_USER_AGENT']) != true)
{
// запись всех юзер-агентов в файл
file_put_contents("11111.txt", $_SERVER['HTTP_USER_AGENT']."\r\n", FILE_APPEND | LOCK_EX);
}
// PHP скрипт останавливает загрузку сайта
exit();
}

$min_index = array_search($min_time,$_SESSION["telecod_ip"]);
// получаем ключ значения минимального времени двух
// ближайших посещений в массиве $_SESSION["telecod_ip"]=array();


$_SESSION["telecod_ip"][$min_index] = $time; // заменяем в массиве предпоследнее время на текущее
}

?>

 


 

Защита серверным редиректом

 

Такой способ схож с первым по общей рабочей схеме. Этот вариант немного лучше первого. Так как в первом случае бот, наблюдая постоянную эмуляцию 503-го ответа, всё равно с сайта никуда не уходит, продолжая долбиться в "закрытые ворота", что может создать дополнительную назрузку на хостинг. В результате хостинг на короткое время может заблокировать сайт через 502 ответ сервера.

 

 

<?php

// доверенные имена ботов
if (stristr($_SERVER['HTTP_USER_AGENT'], 'Yandex')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Google')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Aport')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'bingbot')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Yahoo')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSNBot')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mail.RU')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Rambler')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Slurp')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Scooter')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Teoma')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'ia_archiver')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Lycos')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'WebAlta')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'CNCat')) {$bbots="good";}
elseif (stristr($_SERVER['REMOTE_ADDR'], '94.202.264.34')) {$bbots="good";} // это какой-нибудь доверенный
// IP адрес. если такового нет, то строчку можно закомментировать

else {
// Запускаем сессии
session_start();

// session_save_path($_SERVER["DOCUMENT_ROOT"]."session");
// указываем папку session, куда будет сохраняться информация сессий, её нужно положить в корень сайта
// Но данная строчка, как правило не нужна, так как на хостингах есть, где хранить сессии автоматом


$time = microtime(1); // получаем текущее (последнее) время в сессии с 3-4 знака после запятой

if (!isset($_SESSION["telecod_ip"])) // проверка, что переменная telecod_ip не определена в сессии
{
$_SESSION["telecod_ip"] = array(); // если не определена, тогда добавляем сессию в пустой массив
// или можно в массив занести максимально разрешённое число посещений в секунду: array(0,0,0)
// сколько будет нулей, значит, столько разрешено посещений в секунду. Оба варианта идентичны.

}
$min_time = min($_SESSION["telecod_ip"]);
// это предпоследнее значение времени в сессии с минимум 4-мя знаками после запятой

$interval = $time - $min_time; // получаем интервал времени между двумя ближайшими посещениями

if ($interval <= 1) // сравниваем минимальный временной интервал в секундах между двумя
// ближайшими посещениями с заданной цифрой (секунды)
{
// если условие верное, тогда идёт серверная переадресация
header('Location: https://www.microsoft.com');

// проверка в файле на дубли юзер-агентов в записях
if(stristr(file_get_contents("11111.txt"), $_SERVER['HTTP_USER_AGENT']) != true)
{
// запись всех юзер-агентов в файл
file_put_contents("11111.txt", $_SERVER['HTTP_USER_AGENT']."\r\n", FILE_APPEND | LOCK_EX);
}
}
$min_index = array_search($min_time,$_SESSION["telecod_ip"]);
// получаем ключ значения минимального времени двух
// ближайших посещений в массиве $_SESSION["telecod_ip"]=array();


$_SESSION["telecod_ip"][$min_index] = $time; // заменяем в массиве предпоследнее время на текущее
}

?>

 


 

PHP скрипт защиты от средних DDOS атак и спам ботов 403-им ответом сервера

 

При данном варианте защиты сайта, это будет самый, что ни на есть настоящий 403-ий ответ сервера, а не его эмуляция. Можно гарантированно защититься от всего, что описано выше, а также от среднего уровня непродолжительных DDOS атак спам ботов. Если атаки будут длительные и мощные, тогда просто ляжет сам хостинг.

 

 

<?php
// Функция для 100% определения IP адреса посетителя (спамера)
function RealIpAddr()
{
if(isset($HTTP_SERVER_VARS)) {
if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) {
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}else{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
}else{
if(getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$ip = getenv( 'HTTP_X_FORWARDED_FOR' );
}elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$ip = getenv( 'HTTP_CLIENT_IP' );
}else {
$ip = getenv( 'REMOTE_ADDR' );
}
}
return $ip;
}
$ip = RealIpAddr(); // Получение IP адреса посетителя
$lines = array();
if (!in_array($ip, $lines)) // Проверка наличия IP в массиве
{
$lines[] = $ip;
}

// Доверенные имена ботов
if (stristr($_SERVER['HTTP_USER_AGENT'], 'Yandex')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Google')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Aport')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'bingbot')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Yahoo')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSNBot')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mail.RU')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Rambler')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Slurp')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Scooter')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Teoma')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'ia_archiver')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Lycos')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'WebAlta')) {$bbots="good";}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'CNCat')) {$bbots="good";}
elseif (stristr($_SERVER['REMOTE_ADDR'], '94.202.264.34')) {$bbots="good";} // это какой-нибудь доверенный
// IP адрес. Если такового нет, то строчку можно закомментировать
else {
// Запускаем сессии
session_start();

// session_save_path($_SERVER["DOCUMENT_ROOT"]."session");
// указываем папку session, куда будет сохраняться информация сессий, её нужно положить в корень сайта
// Но данная строчка, как правило не нужна, так как на хостингах есть, где хранить сессии автоматом


$time = microtime(1); // получаем текущее (последнее) время в сессии с 3-4 знака после запятой

if (!isset($_SESSION["telecod_ip"])) // проверка, что переменная telecod_ip не определена в сессии
{
$_SESSION["telecod_ip"] = array(); // если не определена, тогда добавляем сессию в пустой массив
// или можно в массив занести максимально разрешённое число посещений в секунду: array(0,0,0)
// сколько будет нулей, значит, столько разрешено посещений в секунду. Оба варианта идентичны.

}
$min_time = min($_SESSION["telecod_ip"]);
// это предпоследнее значение времени в сессии с 3-4 знака после запятой

$interval = $time - $min_time; // получаем интервал времени между двумя ближайшими посещениями

if ($interval <= 1) // сравниваем минимальный временной интервал в секундах между двумя
// ближайшими посещениями с заданной цифрой (секунды)
{

$file = ".htaccess"; // Корневой файл, куда пишем строки типа "Deny from x.x.x.x".
// Нужно выставить на этот файл 644 права доступа

// Присваиваем переменной $mytext значение собранное из фразы "Deny from" и IP спамера
$mytext = " Deny from $ip"; // Перед «Deny from» желательно оставить пробел, так как иногда несколько строк
// могут записаться в файл .htaccess слитно, что сразу выскочит серверной ошибкой.


// Проверка файла .htaccess на наличие в нём IP, что бы не допустить
// повторной записи IP спамера
if(stristr(file_get_contents($file), $mytext) != true)
{

// Если IP спамера в файле .htaccess не найдено, тогда в него добавляем запись типа "Deny from x.x.x.x"
// Каждая запись пишется с новой строчки. Все строки с записями пишутся в самый низ файла .htaccess
// после всего, что там уже было и что трогать нельзя

$fp = fopen($file,"a");
flock($fp, LOCK_EX); // блокируем файл
fseek($fp, 0); // ставим указатель на начало файла
fwrite($fp,"$mytext\r\n");
flock($fp, LOCK_UN); // снимаем блокировку
fclose($fp);

// Или можно эту строчку использовать взамен верхних шести, работает одинаково хорошо
// file_put_contents($file, $mytext."\r\n", FILE_APPEND | LOCK_EX);

}
}

$min_index = array_search($min_time,$_SESSION["telecod_ip"]);
// получаем ключ значения минимального времени двух
// ближайших посещений в массиве $_SESSION["telecod_ip"]=array();


$_SESSION["telecod_ip"][$min_index] = $time; // заменяем в массиве предпоследнее время на текущее
}

?>

 


 

Скрипт аналогичный верхнему скрипту борьбы со спамом, но работающий с MSQL базой


Все приведённые выше скрипты защиты от спама и DDOS атак для своей работы не требуют MSQL баз и работают на PHP сессиях. В этих скриптах, как и в ниже прилагаемом скрипте с применением MSQL базы, имеется возможность регулировать, как число ближайших посещений сайта в секунду (интервал времени), так и сам временной интервал.

Но у данного варианта есть маленькое НО, дело в том, что скорость работы скриптов на сессиях гораздо выше, чем с базой MSQL. Хотя в большинстве практических случаев - это мелочи.

 

Скачать скрипт, работающий с базами MSQL можно по ссылке ниже. Все оптимальные настройки скриптов с MSQL базой указаны внутри самих скриптов.

 

СКАЧАТЬ СКРИПТ

 


 

Есть небольшое дополнение к последним двум PHP скриптам. Учитывая, что в список спам ботов может случайно попасть любой доверенный IP адрес, а также учитывая, что совсем за непродолжительный промежуток времени файл .htaccess будет сильно набит адресами спамеров, то для предотвращения всего этого, нам нужно с какой-нибудь периодичностью, например один раз в неделю или меньше, удалять из файла .htaccess все ранее записанные в него скриптом защиты от спам ботов и DDOS атак IP адреса этих спам ботов от которых вы пытаетесь защищаться.

 

Для выполнения очистки файла .htaccess, прилагается второй PHP скрипт. Он будет лежать, например, в корне сайта - рядом с перезаписываемым файлом .htaccess. Хотя можете запрятать файл со скриптом перезаписи, куда-нибудь поглубже - работать всё равно будет, только тогда не забудьте в строке $filee='.htaccess'; переписать адресацию до файла .htaccess. Запускать его нужно обычным КРОНОМ - заданием по расписанию, эта настройка есть на всех хостингах. Также можно запускать этот файл из браузера.

 

Назвать скрипт перезаписи файла .htaccess можете, как хотите, например, resetter.php. Скрипт ниже.

 

Не зависимо, где вы его поместите, выставите на него права 444. Данный файл запустить просто так не получится - он под паролём. Смысл запароливания в том, что стоит только кому угодно запустить файл, а это могут быть и обычные поисковые боты, и спамерские, то скрипт тут же сработает и перезапишет файл .htaccess. И таких сработок благодаря спамерам и простым поисковым ботам может быть за сутки полным полно. Какая же тогда это защита от DDOS атак и спам ботов? Сам скрипт ниже.

 

 

<?php

if ($pass = $_GET['pass']=='11111') // Пароль для доступа к запуску этого файла 11111. Пароль меняйте
// на любой. Пример адресации для запуска файла из браузера: http://Ваш домен/resetter.php?pass=11111
// Если будете запускать файл КРОНОМ, не забудьте добавить к ссылке до файла вот это: ?pass=11111
// Где 11111 - пароль, смените его на свой.

{

$filee='.htaccess'; // Адрес до записываемого файла .htaccess

// Присваиваем переменной $mytext_2 фразу "Deny from"
$mytext_2 = 'Deny from';

$null=<<<htaccess

Тут находится содержимое оригинального файла .htaccess

htaccess;

// Проверка файла .htaccess на наличие в нём хотя бы одной фразы "Deny from". Если она есть,
// то файл .htaccess перезаписывается

if(strstr(file_get_contents($filee), $mytext_2) != false)

{
$fpp = fopen($filee,"w");
flock($fp, LOCK_EX); // блокируем файл
fseek($fp, 0); // ставим указатель на начало файла
fwrite($fpp, $null);
flock($fp, LOCK_UN); // снимаем блокировку
fclose($fpp);
}
}

?>

 


 

Как и куда подключить данные скрипты защиты от спама


Любой из первых четырёх скриптов инклюдится или вписывается в самое начало индексного файла движка сайта после <php. Какой это файл, думаю вам понятно. Защита от спам ботов и не сильных DDOC атак почти гарантирована (на 100% защиту этими вариантами гарантировать нельзя).
Минимальное и оптимальное число посещений, чтобы защититься от спама и спам ботов равно 3-5 в секунду. Выставлять 2 не стоит, иначе в бан могут попасть обычные пользователи интернета - случайно лихорадочно кликнувшие по ссылке тройку раз, и тогда скрипт защиты от спама сработает.

 


 

Защита от спама технических папок и файлов


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

 

Как правило, технические файлы защищены, если в папке в которой они лежат, имеется файл .htaccess с содержащимися в нём вот этими строчками:

Order Deny,Allow
Deny from all


Эти две строки помогают избавить директорию от её посещения кем бы то ни было кроме сервера (хостинга), где находится сам сайт. Для него доступ свободен.

 

Конечно, данными строками далеко не все технические папки сайта можно закрыть - если всё закрыть таким образом, то сайт может вообще перестать нормально работать. Но так или иначе всегда есть папки подверженные спам атакам, которые как раз можно закрыть от этих спам атак, при этом сайт работать будет без проблем. Такие папки в каждом движке сайта свои и их просто нужно знать.

 

Если в корневой файл .htaccess вписать вот такую или такие строчки по аналогии (первую строку дублировать не нужно):

RewriteCond %{HTTP_REFERER} !^http://ваш домен/ [NC]
RewriteRule ^Имя защищаемой папки/(.*)$ http://адрес переадресации [NC]


то при любой попытке бота, кроме самого сервера (скриптов сайта), обратится к защищаемой папке или при попытке кого бы то ни было войти в эту папку через браузер, тут же последует серверная переадресация на URL, который будет указан во второй строке. Например, можно указать переадресацию на свой же главный индексный файл, в котором содержится любой выше приведённый скрипт защиты от спама. И тогда атакующий защищаемую папку, просто попадёт в бан-лист и доступ на сайт ему будет вообще закрыт.


Только нужно учесть, что если в HTML коде страниц вашего сайта имеется строчка, которая будет подгружать в ваш браузер какую-либо полезную информацию (например, картинку или текст) из защищаемой папки, то тогда эта самая информация НЕ под грузится и отображаться в браузере НЕ будет.


И обязательно не забудьте прописать в файле robots.txt вашего сайта строчку:


Disallow: /Имя защищаемой папки


Обратите внимание - слеш на конце этой строчки НЕ нужен.




Что делать, если на хостинге нет КРОНА?


Вариантов развития ситуации имеется три:

1. Сменить хостинг на другой (не всегда возможно).
2. Периодически запускать самому скрипт очистки логов спам ботов.
3. Использовать на сайте PHP скрипт эмулятор КРОНА.

Ниже опишу третий вариант: скрипт эмулятор КРОНА

 

Скрипт эмулятора КРОНА вставляется в главный индексный файл сайта (как и все выше приведённые PHP скрипты) и работает просто. При любом отдельно взятом заходе посетителя или бота на сайт, данный скрипт сработает и начнёт производить отсчёт времени, настройку которого можно сделать в скрипте. Так вот, если между двумя ближайшими посещениями сайта (даже спам ботами) не пройдёт настроенного интервала времени, то скрипт более срабатывать не будет, а если при последующем посещении сайта (кем угодно и спам ботами тоже) время между заходами на сайт превысит настроенный интервал, то PHP скрипт эмулятора КРОНА сработает и запустит наш файл resetter.php для очистки логов спам ботов и ботов DDOS атак.

 

<?php

$cron_time=filemtime("cron_time"); // получаем время последнего изменения файла "cron_time"
// Файл "cron_time" скрипт создаст сам

if (time()-$cron_time>=600) // сравниваем с текущим временем 600 секунд это - 10 минут
{
file_put_contents("cron_time",""); // перезаписываем файл cron_time

// $_GET['pass']="11111"; // Если файл resetter.php запаролен, то раскомментировать эту строку

include "resetter.php"; // выполняем работу скрипта resetter.php
}

?>

 

Если вам нужно, чтобы скрипт эмулятор КРОНА срабатывал только один раз в сутки или раз в неделю, начиная с заходом самого первого посетителя (включая и любых ботов), то данный PHP скрипт эмулятора можно легко изменить:

 

<?php

$cron_time=filemtime("cron_time"); // получаем время последнего изменения файла "cron_time"
// Файл "cron_time" скрипт создаст сам

if (date("d")!=date("d",$cron_time)) // сравниваем день изменения файла с текущим

// if (date("w")!=date("1",$cron_time)) // сравниваем название дня недели изменения файла с текущим.
// От 0 (воскресенье) до 6 (суббота)

{
file_put_contents("cron_time",""); // перезаписываем файл cron_time

// $_GET['pass']="11111"; // Если файл resetter.php запаролен, то раскомментировать эту строку

include "resetter.php"; // выполняем работу скрипта resetter.php
}

?>



Архив | Связь с админом | Конфиденциальность

RSS канал новостей     Яндекс.Метрика