Блокировка пользователя по IP

Author Автор: Роман Чернышов    Опубликовано: 9 сентября 2012

Небольшой пост-заметка о паре способов блокировки пользователя по 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('Доступ запрещен.');

Запрета доступа для целой подсети

if(strpos($_SERVER['HTTP_X_REAL_IP'],'123.0.1.')) 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('Доступ запрещен.');

Думаю эта заметка будет полезна вам, если что-то непонятно или есть чем дополнить милости прошу в комментарии.

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

Автор блога
Чернышов Роман
Роман Чернышов
Веб-разработчик, Full Stack
Senior, Architector
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка