Хостинг это еще не все: защита веб-сайта от сканирования

010f7919b95346da8ebf21add09847e1

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

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

010f7919b95346da8ebf21add09847e1 800x429 Хостинг это еще не все: защита веб сайта от сканирования

Главное защита сайта, украинский хостинг это более поздняя проблема

Создание скрипта

Самым эффективным методом противодействия сканированию веб-портала, а также всем видам интенсивных хаотичных запросов, считается установка определенной временной задержки между всеми запросами, которые исходят от одного пользователя. Во время идентификации пользователя главный упор необходимо делать на его адрес IP, так как Cookie-файлы могут быть с легкостью удалены.

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

Этот метод защиты веб-сайта стоит реализовать посредством написания специального PHP-скрипта, надежный хостинг это уже потом. Его использование поможет защитить контент интернет-ресурса от сканирования проводимого с помощью приложений-краулеров, а также поможет сильно замедлить сканирование сайта «вручную». Вдобавок, применение такого скрипта обеспечит отличную защищенность абсолютно всех страничек сайта от разных видов интенсивных хаотичных запросов.

Логика работы системы защиты веб-сайта, создаваемой в форме PHP-скрипта, приведена на изображении:

f100f0d9a3474bdf8a22f20fe4b023bb Хостинг это еще не все: защита веб сайта от сканирования

Во время создания скрипта важным нюансом является выбор варианта хранения получаемых данных. В нашем случае, это адреса IP текущих пользователей. Такая информация может храниться либо в БД, либо на винчестере. Чтобы ускорить работу скрипта, а также сделать его устойчивым, для хранения адресов IP текущих пользователей мы будем применять папки кэширования.

В одну из таких папок скрипт помещать на хранение будет IP-адреса активных, в настоящий момент пользователей, эта папка будет называться Active. А во вторую папку мы будем вносить все файлы, название которых включать будет IP-адреса заблокированных пользователей (папка Block).

Как узнать об активности пользователя

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

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

В названии файла, до нижнего слеша, будет содержаться адрес IP активного пользователя, после нижнего слеша в название файла будет вноситься время, в которое он проявил свою активность.

Отдельно необходимо заметить то, что для папок кэширования, то есть папок block и active, обязательно надо выставить права доступа владельца файла, либо 777. Другими словами, атрибуты этих директорий, указанные на сервере, должны скрипту давать право на чтение, право на запись и право на выполнение. Права доступа 777 в обязательном порядке должны установлены быть для всех пользователей.

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

Сведения о текущих пользователях можно брать из суперглобального массива $_SERVER[]. Там содержатся значения разных переменных окружения. Для работы с адресами IP клиентов нам потребуется применять следующие переменные окружения:

  • $_SERVER['HTTP_X_FORWARDED_FOR'].
  • $_SERVER['HTTP_CLIENT_IP'].
  • $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'].
  • $_SERVER['HTTP_PROXY_USER'].
  • $_SERVER['REMOTE_ADDR'].

Переменная окружения $_SERVER['HTTP_X_FORWARDED_FOR'] позволяет определить адрес IP клиента, если он для работы применяет сервер прокси. Переменная окружения $_SERVER['HTTP_CLIENT_IP'] позволяет получить адрес IP клиента, если он не применяет сервер прокси. Переменная окружения $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] позволяет получить адрес IP клиента, если на веб-сайте не применяется криптографический протокол SSL, который обеспечивает безопасное соединение между пользователем и сервером.

Переменная окружения $_SERVER['HTTP_PROXY_USER'] позволяет определить адрес IP клиента, который в работе применяет сервер прокси.

Переменная окружения $_SERVER['REMOTE_ADDR'] позволяет получить адрес IP удаленного пользователя. В момент тестирования на локальной машине этот IP-адрес равен будет 127.0.0.1. В то же время в сети эта переменная вернет или адрес IP клиента, или IP-адрес последнего применяемого пользователем прокси-сервера.

Применяя сразу множество разных переменных окружения из массива $_SERVER[] (все применяемые переменные приведены чуть выше), у нас будет хорошая возможность определить реальный адрес IP пользователя, даже если он его как-то замаскирует с помощью любого прокси-сервера.

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

Настройки скрипта

Скрипт должен обладать возможностью настройки. Такие параметры в скрипте изначально будут задаваться посредством констант.

В частности, константами в скрипте указаны будут следующие параметры:

  • Время блокировки адреса IP пользователя в секундах (Const blockSeconds).
  • Интервал времени, в который учитываться будут запросы от одного пользователя к страничкам сайта. Этот интервал также указываться будет в секундах (Const intervalSeconds).
  • Число запросов к страничкам сайта, которые может отправить один пользователь за определенное время (Const intervalTimes).

Отдельно в нашем скрипте необходимо определить массивы, содержащие такие строчные сведения:

  • Массив значений адресов IP, внесенных в «перечень всегда разрешенных адресов IP» (Public Static $alwaysActive = array (‘’)).
  • Массив значений адресов IP, внесенных в «перечень всегда запрещенных адресов IP» (Public Static $alwaysBlock = array (‘’)).

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

  • Флаг возможности подключения постоянно активных клиентов — Const isAlwaysActive.
  • Флаг возможности подключения постоянно заблокированных клиентов — Const isAlwaysBlock.

Скрипт содержит класс TBlockIp. Он включает следующие методы:

  • checkIp (). Этот метод реализовывает возможность выполнения проверки адреса IP пользователя на его блокировку или на активность. Причем пропускаются адреса IP, которые внесены в перечень «всегда разрешенных адресов IP», IP-адреса внесенные в перечень «всегда запрещенных адресов IP» блокируются.
  • getIp (). Этот метод позволяет получить текущий адрес IP пользователя, выбираемый из возможных IP-адресов.

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

Листинг программы

1 Хостинг это еще не все: защита веб сайта от сканирования

2 Хостинг это еще не все: защита веб сайта от сканирования

3 Хостинг это еще не все: защита веб сайта от сканирования

4 Хостинг это еще не все: защита веб сайта от сканирования

5 Хостинг это еще не все: защита веб сайта от сканирования

6 Хостинг это еще не все: защита веб сайта от сканирования

Этот скрипт внедрить можно прямо в индексную страничку или отдельно в файле PHP, включив его вызов в начале файла индекса.

Пример внедрения в индексный файл веб-сайта. Вверху индексного файла следует написать:

include '/block/index.php';

В таком случае необходимо создать в корне директорию «Block», в ней еще директории «Active» и «Block», а также файл с названием index.php (сюда копируем приведенный выше код).


Поделитесь с друзьями



Оставить комментарий

apteka mujchine for man ukonkemerovo woditely driver.