Блокировка пользователя по IP
Небольшой пост-заметка о паре способов блокировки пользователя по IP, например несчастного «спамера» или «доссера». Иногда спамеры, а точнее боты(автоматические системы, скрипты рассылки нежелательных сообщений) публикующие объявления в комментариях блогов, могут нагружать своими частыми запросами сервер так, что ваш сайт просто не будет открываться. Вроде и не DDOS вовсе, а нагрузка идет ощутимая. Перейдем к примерам:
1. Запрет по IP с использованием файла .htaccess (что лежит в корне сайта, если его нет то создать), для этого нужно прописать в самом файле следующие строки:
order allow,deny deny from 123.45.6.7 deny from 012.34.5. allow from all |
После чего пользователь или еще кто либо с IP адресом 123.45.6.7 будет заблокирован и более не получит доступа к вашему сайту. Также можно блокировать целую подсеть IP адресов 012.34.5. в этом примере мы не пишем последнее число, тем самым отсекаем доступ для диапазона 012.34.5.0 — 012.34.5.255
Преимущество данного способа в том, что пользовательский запрос отсекается еще перед началом выполнения скриптов на вашем сервере, самим Apache, тем самым не нагружая ваш сервер(хостинг, сайт).
2. Второй вариант, ограничение доступа по средствам PHP. В этом случае Apache пропускает пользователя на сайт и обрабатывает его запрос, далее скрипт при выполнении определяет его IP и выводит сообщение о запрете доступа.
if($_SERVER['HTTP_X_REAL_IP']=='123.0.1.2') die('Доступ запрещен.'); |
Запрета доступа для целой подсети
Пример с логированием. Пишем в файл все неудачные попытки доступа (Время, IP, URL).
$fp = fopen('ipaccess.txt', 'a+'); fwrite($fp, date('d.m.Y H:i:s')." {$_SERVER['HTTP_X_REAL_IP']} {$_SERVER['REQUEST_URI']}\n"); if(strpos($_SERVER['HTTP_X_REAL_IP'],'123.0.1.')) die('Доступ запрещен.'); |
Думаю эта заметка будет полезна вам, если что-то непонятно или есть чем дополнить милости прошу в комментарии.

Автор:






