Создать ответ 
Защита сайта от частых обращений к страничкам
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #1
Защита сайта от частых обращений к страничкам
Данный комментарий из-за достаточно большого объема был перенесен из темы Защита сайта от частых обращений к страничкам

(17.08.2015 15:58:33)Геннадий писал(а):Да, и этот скрипт рабочий. Только в строке $time=$t[1]+$t[0]; мы получаем текущее время с точностью не до сотых, а до десятитысячных долей. Простое echo $time; это докажет.

Всё классно, но может можно как-нибудь преобразовать сточку array(0,0,0); в что-нибудь попроще? Другими словами, тут сколько я хочу выставить обращений в определённое время - столько нолей я должен написать - хочется проще.

Есть два момента:
1. Имеет ли смысл добавлять в скрипт строчку session_save_path($_SERVER["DOCUMENT_ROOT"]."session");
Скрипт работает и без неё. Это что-нибудь нам даёт?
2. Смотрите, что я обнаружил при тестировании скрипта. В принципе, нам нужно выставить в строчке if ($time-$min_time < 3.5) не 3.5 секунды, а всего 1 секунду. Так как нам ведь для простоты подсчёта нужно знать число обращений к сайту за 1 секунду. Зачем нам выставлять время, например, 3.7 или 4.2?
Так вот, когда стоит в настройках 1 секунда, то скрипт срабатывает чётко и без проблем. А если выставит, например, 0.2 или 1/5 (или любые цифры по аналогии), то срабатывание скрипта идёт крайне и крайне не стабильно.

Провёл массу тестов - всё подтверждается. Хотя по логике, я могу цифру времени выставить и таким образом тоже.
17.08.2015 20:20:05
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Защита сайта от частых обращений к страничкам
У меня echo $time; выводит только до сотых, хотя echo $t[0]; - 8 знаков после запятой. Наверно, зависит от конкретного сервера и его настроек.

При помощи array(0,0,0); мы объявляем массив и присваиваем его элементам значения, равные нулю. Думаю, проще не получится.

1. session_save_path устанавливает путь сохранения текущей сессии. Если все работает, то добавлять не нужно.

2. В теме я попытался разъяснить, зачем нужно большое время и учет нескольких обращений (например, пользователь прокликал для открытия в новом окне сразу 8 ссылок сайта или элементарно нажал 4 раза F5). В таком случае скрипт нужно настраивать, например, на 10 кликов за 5 сек., а не на 3 клика за 1,5 сек.
Можно, конечно, указать и 10 обращений за одну секунду, но реальные пользователи вряд ли с такой скоростью обращаются к сайту.

Что значит срабатывает нестабильно? Используйте для тестирования вывод всех значений массива при помощи foreach($_SESSION["arr_time"] as $value) echo $value."<br>";
Тогда Вы убедитесь, что все работает стабильно.

Есть предположение, что такое мнение о нестабильности скрипта вызвано тем, что если зажать кнопку F5, то периодически "пробивается" защита. Но это не так, т.к. скрипт не учитывает те обращения к сайту, когда происходит вывод сообщения "Вы слишком часто обращаетесь к страничкам сайта!".

Т.е. если в скрипте указано 3 обращения за 0.2 сек., то это означает, что 4-е и последующие обращения к сайту промежуток времени которых относительно первого более 0.2 сек., будут блокироваться. Если же, например, при шестом обращении разница относительно первого превысила 0.2 сек., то скрипт не будет блокировать данное обращение.

Если же Вам необходимо учитывать и заблокированные обращения к сайту (когда выводится надпись "Вы слишком часто обращаетесь к страничкам сайта!"), то поместите строчки:
PHP код:
$min_index=array_search($min_time,$_SESSION["arr_time"]);
$_SESSION["arr_time"][$min_index]=$time

перед строчкой:
PHP код:
if ($time-$min_time 0.2) die("Вы слишком часто обращаетесь к страничкам сайта!"); 

Write Что-то много написал, но надеюсь, хоть понятно объяснил.

P.S. Если у Вас по данным вопросам еще остались вопросы, то можете продолжать задавать их в комментариях, я их буду переносить на форум.
17.08.2015 20:39:51
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #3
RE: Защита сайта от частых обращений к страничкам
(18.08.2015 08:59:36)Геннадий писал(а):Продолжаю разбираться в скрипте. Ставлю сотни опытов, но пока не вижу чёткого алгоритма в его работе. Скажите, в каких величинах в строке if ($time-$min_time < 3.5) указана цифра 3.5?
Если в секундах, тогда мне не понятно, почему между любыми двумя отдельно взятыми посещениями, если посмотреть через echo $time-$min_time;, то выводимые цифры могут составить до 100. Я понимаю, если разница доли секунды или единицы, но десятки секунд откуда берутся?

(18.08.2015 13:01:06)Геннадий писал(а):С прошлым моментом касаемо огромных цифр на выводе - кажется разобрался сам.

Для тех, кто сам не разобрался, поясню, что в скрипте значение 3.5 указано в секундах.
Если смотреть через echo $time-$min_time;, то выводимые значения будут соответствовать разнице между текущим и минимальным временем, хранящимся в массиве.
Следовательно, если, например, скрипт хранит 3 значения времени, то насколько бы быстро не была обновлена страничка между вторым и третьим визитом, разница во времени будет считаться между третьим и первым посещением. А первое посещение в свою очередь могло быть хоть 10 минут назад.
18.08.2015 20:23:21
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Защита сайта от частых обращений к страничкам
(19.08.2015 12:14:19)Геннадий писал(а):Добрый день. Продолжаю ставить опыты на предмет качества работы скрипта. Смотрите, что получается. Если бомбить сайт с простого компьютера (даже если и через прокси), то IP бомбящего чётко блокируется скриптом и вопросов к работе не возникает, но во если сделать реальный тест DDOS атаки (я нашёл такой онлайн-сервис), то эти атаки скрипт вообще не видит. В доказательство того, что эти DDOS атаки имеют место быть, я лезу в логи хостера и смотрю, как там всё отражается - в момент атак нагрузка на процессор резко возрастает.
В чём тогда подвох? Почему скрипт не блокирует эти DDOS атаки?
Или они прячут свои IP - если такое вообще возможно.

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

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

Попробуйте провести аналогичные DDOS атаки на свой сайт с установленным скриптом и без него и сравните результаты нагрузки на сервер.
19.08.2015 22:13:48
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #5
RE: Защита сайта от частых обращений к страничкам
(20.08.2015 16:07:37)Геннадий писал(а):Я немного погодя разобрался, почему мной инициированные с онлайн-сервиса DDOS атаки скрипт не заметил, хотя нагрузка на процессор сервера сразу резко возросла. Я для опытов настроил скрипт на максимум 3 обращения в секунду. Но, когда я потом просмотрев логи на хостинге, увидел, что атаки были с одного IP адреса, но организованные по-хитрому. Как известно, содержимое любого сайта содержит большое количество технических файлов и папок - банальные PHP и JS файлы со скриптами. И вот они то, как раз вообще ни как не контролируются скриптом защиты. А атака в основном шла на эти технические файлы и изредка на полезные страницы сайта, причём так, чтобы по 3 посещений в секунду - никогда.
Вот именно поэтому нагрузка на сервер возросла, а скрипт ничего не заметил.
А простое долбилово со своего компьютера (есть такие скрипты), скрипт защиты ловит чётко.

Все верно. Скрипт защищает только файлы, в которых скрипт присутствует. JS, CSS и подобные файлы скрипт не защищает, т.к. его в них не встроить.

С другой стороны особой нагрузки быть не должно, т.к. данные файлы должны попросту отдаваться на скачивание в браузер. Основная нагрузка - PHP файлы с какими-либо "тяжелыми" расчетами и запросами к БД.
20.08.2015 22:31:10
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: Защита сайта от частых обращений к страничкам
(21.08.2015 07:59:46)Геннадий писал(а):При простом рысканье спам ботов (онлайн-сервис, которым я тестирую) по техническим файлам и папкам, нагрузка на процессор хостинга возрастает до 5%-7%. Так что они нагружают хостинг не слабо.
А вот если я запускаю свой скрипт с моего компьютера, то тут нагрузка на процессор доходит до 20% и более. Скрипт просто посылает любое выбранное мной число запросов в секунду на сайт, но строго по одному URL адресу. Причём для тестов я ставил в настройках своего скрипта 300 запросов в секунду.
21.08.2015 22:31:14
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru