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

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #1
Немного измененный скрипт автобана
В данной теме мы рассмотрим модификацию скрипта Автобан, или как автоматически заблокировать доступ к сайту

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

Почему мы не стали вносить изменения в тему Автобан, или как автоматически заблокировать доступ к сайту?

Отвечаем: у данной модификации есть небольшой минус. А именно, если в файле .htaccess есть несколько строк, содержащих <Limit GET POST>, то скрипт может работать неверно. Для устранения этого недостатка придется делать еще несколько более сложных проверок.

Собственно для получения модифицированного скрипта автобана добавьте после строчки $file_htaccess=".htaccess"; следующий PHP код:

PHP код:
$start_line=0;

    
$lines=file($file_htaccess);
    for (
$n=0$n<=count($lines); $n++) if ($lines[$n] == "<Limit GET POST> \r\n"$start_line=$n;
    if (
$start_line!=0) for ($n=0$n<$start_line$n++) $lines_htaccess[]=$lines[$n];
        else 
$lines_htaccess=$lines

Таким образом, данный код будет считывать файл .htaccess, проверять его на наличие строки <Limit GET POST>, и в случае если такая строчка будет обнаружена, то с данной строки файл будет перезаписан. Если строчка <Limit GET POST> не была найдена, то код для запрета доступа для указанных IP адресов будет добавлен в конец файла .htaccess.
06.04.2012 19:56:14
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #2
RE: Немного измененный скрипт автобана
Скажите пожалуйста в чём преимущество этого скрипта перед тем что я прислал в качестве примера для функции "откуда пришёл"?

http://usefulscript.ru/forum/showthread....285#pid285
09.04.2012 21:54:33
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #3
RE: Немного измененный скрипт автобана
(09.04.2012 21:54:33)Incognito писал(а):  Скажите пожалуйста в чём преимущество этого скрипта перед тем что я прислал в качестве примера для функции "откуда пришёл"?

http://usefulscript.ru/forum/showthread....285#pid285

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

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

Например, мы можем оценивать посещаемость сайта и каждой странички в отдельности (ТОП посещаемых тем), снимать через определенное время бан с IP адреса, при этом не удаляя его из нашей базы. В случае повторного нарушения срок бана будет увеличен и т.д.
Так же мы публикуем список забаненных IP адресов и сроки снятия с них банов.
09.04.2012 22:52:52
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #4
RE: Немного измененный скрипт автобана
Ну вот я только что проверил тот скрипт который я выкладывал: попробовал скачать свой сайт через Offline Explorer Pro - никакого бана в .htcaccess не происходит (хотя если в ручную быстро обновлять страницу скрипт срабатывает)... Может Ваш попробовать? Как он отреагирует на попытку скачать сайт при помощи Offline Explorer Pro?
(Последний раз сообщение было отредактировано 09.04.2012 в 23:09:54, отредактировал пользователь Incognito.)
09.04.2012 23:09:03
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #5
RE: Немного измененный скрипт автобана
(09.04.2012 23:09:03)Incognito писал(а):  Ну вот я только что проверил тот скрипт который я выкладывал: попробовал скачать свой сайт через Offline Explorer Pro - никакого бана в .htcaccess не происходит (хотя если в ручную быстро обновлять страницу скрипт срабатывает)... Может Ваш попробовать? Как он отреагирует на попытку скачать сайт при помощи Offline Explorer Pro?

Для начала нужно узнать какие параметры скрипта у Вас установлены (интервал времени и количество просмотров). В приведенном Вами скрипте по умолчанию стоит 10 просмотров в минуту. При превышении данного количества просмотров в минуту должен сработать скрипт бана.
Так же следует проследить как происходит скачивание сайта (с одно IP адреса или сразу с нескольких).
10.04.2012 19:15:10
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #6
RE: Немного измененный скрипт автобана
(10.04.2012 19:15:10)Admin писал(а):  (с одно IP адреса или сразу с нескольких).

Ну разумеется с одного, не может же один пользователь сразу несколько ip адресов занимать?
11.04.2012 06:38:03
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #7
RE: Немного измененный скрипт автобана
(11.04.2012 06:38:03)Incognito писал(а):  Ну разумеется с одного, не может же один пользователь сразу несколько ip адресов занимать?

Ну почему же нет. А как же использование прокси серверов?
11.04.2012 18:47:39
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #8
RE: Немного измененный скрипт автобана
(11.04.2012 18:47:39)Admin писал(а):  
(11.04.2012 06:38:03)Incognito писал(а):  Ну разумеется с одного, не может же один пользователь сразу несколько ip адресов занимать?

Ну почему же нет. А как же использование прокси серверов?

Благодарю за информацию, никогда не углублялся в подобные нюансы... Век живи - век учись! Wink
11.04.2012 19:54:30
Найти все сообщения Цитировать это сообщение
Domino Не на форуме
Маршал
*

Сообщений: 5
У нас с: Apr 2012
Сообщение: #9
RE: Немного измененный скрипт автобана
Несколько вопросов скрипт работает правильно, если адрес сайта, например, _http://sait.ru/forum, а если адрес _http://sait.ru то пишет на этой странице обнаружена циклическая переадресация.
Можно сделать чтобы и главную страницу правильно обрабатывало?
Вот часть .htaccess я полагаю что ошибка в этой строчке:
Цитата:ErrorDocument 403 /err.php?err=403
Если её убрать ошибка пропадает (убирать эту строчку не желательно), и ещё вопрос можно сделать чтобы бан автоматически снимался например через сутки?
12.04.2012 18:33:34
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #10
RE: Немного измененный скрипт автобана
(12.04.2012 18:33:34)Domino писал(а):  Несколько вопросов скрипт работает правильно, если адрес сайта, например, _http://sait.ru/forum, а если адрес _http://sait.ru то пишет на этой странице обнаружена циклическая переадресация.
Можно сделать чтобы и главную страницу правильно обрабатывало?
Вот часть .htaccess я полагаю что ошибка в этой строчке:
Цитата:ErrorDocument 403 /err.php?err=403
Если её убрать ошибка пропадает (убирать эту строчку не желательно), и ещё вопрос можно сделать чтобы бан автоматически снимался например через сутки?

В .htaccess строчка
Цитата:ErrorDocument 403 /err.php?err=403
означает, что если доступ пользователю запрещен, то его нужно перенаправить на страничку err.php?err=403. далее нужно смотреть что у Вас содержится в файле err.php, т.к. там возможно срабатывает переадресация на главную страницу, после чего опять пользователя перебрасывает на err.php и так до бесконечности.

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

По поводу снятия бана делается очень легко. Для этого в таблицу black_list_ip нужно добавить поле date (тип date).
Далее строчку:
PHP код:
$lines_htaccess[]=" deny from ".$htaccess_ip[ip]."\r\n"

Заменить на:
PHP код:
$new_date explode('-',$htaccess_ip[date]);
if (
date("Y-m-d")<date("Y-m-d"mktime(000$new_date[1], $new_date[2]+$ban_day$new_date[0])))$lines_htaccess[]=" deny from ".$htaccess_ip[ip]."\r\n"

где переменная $ban_day содержит количество дней, по истечению которых бан будет снят.

В данном случае при последующем срабатывании скрипта информация о забаненном IP адресе не будет удалена из MySQL, но при этом IP пропадет из файла .htaccess.

Можно еще проще сделать, удалив забаненный IP из MySQL, но так не интересно. Big Grin Ведь тогда мы не сможем вычислить злостных нарушителей.
12.04.2012 19:48:10
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru