Блокировка пользователя по 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, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 159₽
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

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