Забыли пароль?
Запросите новый здесь.

Автор темы: Pisatel
ID темы: 1730
Информация:
Тема содержит 54 сообщения, была просмотрена 18195 раз.  Имеются прикрепленные файлы.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Народное творчество
 Распечатать тему
IP Autoban Panel
Pisatel
| Плагин IP Autoban

| Версия 1.3.1
| Автор: Pisatel
| Email: admin@meweb.ru
| Тема поддержки: http://www.meweb.ru/forum/viewthread.php?thread_id=9

| Установка:
- Установить как обычный плагин: распаковать в папку infusions, далее Администрирование системы -> Плагины -> Автобан по IP -> Установить.

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

- Панель состоит только из php- кода, поэтому визуально отображаться не будет.



| Возможности:

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

| Возможности админпанели:

- Просмотр всех ip, посетивших сайт

- Очистка бд от записей

- Редактирование файла .htaccess (только для суперадминистратора) из админпанели с целью снять блок с ip без доступа к фтп

- Просмотр всех забаненных ip

- Очистка таблицы забаненных ip



Для чего нужен данный скрипт?
Данный плагин дает пассивную защиту от DoS (не путать с DDoS!) атак, от брутфорса (подбор паролей методом грубой силы), от несанкционированного размещения комментариев (подбор каптчи).

UPD: v1.3.1
| Изменения в версии 1.3.1
- Исправлена критическая ошибка- файл .htaccess мог создаться в любой директории.
Если у вас установлена предыдущая версия, достаточно заменить файл infusions/autoban_panel/autoban_panel.php

UPD: v1.3
| Изменения в версии 1.3
- Исправлена ошибка с дублированием записи в .htaccess, теперь все работает корректно
- Исправлены мелкие ошибки
Если у вас установлена предыдущая версия, достаточно просто заменить файл infusions/autoban_panel/autoban_panel.php

UPD: v1.2
- Сокращен и оптимизирован код
- Администраторы теперь игнорируются вместе с поисковыми роботами
Pisatel присоединено следующее:файл:
autoban_on_ip_v131.zip [22.39кБ / 251 Загрузки]

Изменил(а) Pisatel, 24.08.2013 08:16
x1 x1 x1
 
Web
Rush
в базу надо было закидывать
x1
 
Web
Pisatel
Rush, обязательно закину. На форуме специально для теста выложил пока. Есть подозрения, что ip из блеклиста будут дублироваться в .htaccess при добавлении новых ip, а вот проверить не могу, так как нет возможности даже на самого себя провести дос с нескольких ипов.
 
Web
Zaxap
Pisatel, а самого себя забанить не могу, случаем..?D
Зло не дремлет, а я добрый...
 
Pisatel
Zaxap написал:

Pisatel, а самого себя забанить не могу, случаем..?D

Ну если только будешь чаще 10 раз за 10 секунд вызывать страницы.
 
Web
Zaxap
Pisatel, это я могу...нужно 11 компьютеров и мой Вай-фай...ну или телефонов большеad
Советую этот как-нибудь...Админа вырезать, что-ли...)))
Зло не дремлет, а я добрый...
 
Pisatel
Ну это уж сами... Легко. Перед записью в базу
Загрузить источник  GeSHi: PHP
  1. if ($ip != '123.123.123.123'){
  2. //запись в базу
  3. }
Добавлено за 0.031 секунд, используя GeSHi 1.0.8.10

Но это только если ип- статический.
 
Web
Zaxap
Вот именно...так что...идею к размышлению, пищу для мозгов эдакую, я вам подкинул - разжевывайте и будем ждать плоды ad
Зло не дремлет, а я добрый...
 
Pisatel
В принципе, можно реализовать в админке ввод ip- исключений, может, в следующих версиях... На данном этапе меня интересуют ошибки и баги в текущей версии.
 
Web
Polarfox
Pisatel, не ипы исключений (хотя можно добавить диапазон 127.x) а админов.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Pisatel
Этого будет достаточно? Сейчас проверил- меня не пишет
Скачать исходники  Код
  if (!iAUTH){ ...


 
Web
Pisatel
Нужна помощь в оценке. Пытаюсь более оптимизировать код, и сделал замену этого куска
Загрузить источник  GeSHi: PHP
  1. if (!empty($_SERVER['HTTP_USER_AGENT'])){
  2. $bot = $_SERVER['HTTP_USER_AGENT'];
  3.  
  4. }
  5. if (stristr($_SERVER['HTTP_USER_AGENT'], 'Yandex')){
  6. $bot='Yandex';
  7. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')){
  8. $bot='YandexBot';
  9. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'YandexDirect')){
  10. $bot='YandexDirect';
  11. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')){
  12. $bot='Googlebot';
  13. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Google')){
  14. $bot='Google';
  15. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mediapartners-Google')){
  16. $bot='Adsense';
  17. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'StackRambler')){
  18. $bot='Rambler';
  19. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Aport')){
  20. $bot='Aport';
  21. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Yahoo')){
  22. $bot='Yahoo';
  23. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'msnbot')){
  24. $bot='msnbot';
  25. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'bingbot')){
  26. $bot='bingbot';
  27. } elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mail')){
  28. $bot = 'Mail';
  29.  
  30. }
  31.  
  32.  
  33. // пишем ip в базу
  34.  
  35. if ($bot != 'Yandex' && $bot != 'YandexBot' && $bot != 'YandexDirect' && $bot != 'Google' && $bot != 'GoogleBot' && $bot != 'Adsense' && $bot != 'Rambler' && $bot != 'Aport' && $bot != 'Yahoo' && $bot != 'msnbot' && $bot != 'bingbot' && $bot != 'Mail'){
  36.  
  37. $result = dbquery("INSERT INTO ".DB_ALL_VISITS." (visit_ip, visit_datestamp) VALUES ('".$ip."', '".time(true)."')");
  38.  
Добавлено за 0.042 секунд, используя GeSHi 1.0.8.10

на этот
Загрузить источник  GeSHi: PHP
  1. if (!empty($_SERVER['HTTP_USER_AGENT'])){
  2. $bot = $_SERVER['HTTP_USER_AGENT'];
  3. } else {
  4. $bot = 'Unknown';
  5. }
  6.  
  7. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Yandex')) ? 'bot' : '".$bot."';
  8. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')) ? 'bot' : '".$bot."';
  9. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'YandexDirect')) ? 'bot' : '".$bot."';
  10. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) ? 'bot' : '".$bot."';
  11. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Google')) ? 'bot' : '".$bot."';
  12. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Mediapartners-Google')) ? 'bot' : '".$bot."';
  13. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'StackRambler')) ? 'bot' : '".$bot."';
  14. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Aport')) ? 'bot' : '".$bot."';
  15. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Yahoo')) ? 'bot' : '".$bot."';
  16. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'msnbot')) ? 'bot' : '".$bot."';
  17. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'bingbot')) ? 'bot' : '".$bot."';
  18. $bot = (stristr($_SERVER['HTTP_USER_AGENT'], 'Mail')) ? 'bot' : '".$bot."';
  19.  
  20.  
  21. // пишем ip в базу
  22.  
  23. if ((!iAUTH) && $bot != 'bot'){
  24.  
  25. $result = dbquery("INSERT INTO ".DB_ALL_VISITS." (visit_ip, visit_datestamp) VALUES ('".$ip."', '".time(true)."')");
  26.  
Добавлено за 0.042 секунд, используя GeSHi 1.0.8.10

Лучше ли это по быстродействию?
 
Web
Polarfox
цикл, in_array да много чего еще можно.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Pisatel
PolarFox, именно об этом и хотел спросить: повысится ли быстродействие, если использовать цикл и массив? Уменьшится ли нагрузка?
 
Web
Polarfox
меньше кода - выше скорость, правильный код - качественная работа.

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

PolarLab - вход для подопытных
 
Web
Pisatel
PolarFox, благодарю за ответ. Попробую пошаманить с массивами.
Кстати, in_array регистрозависима, и это меня печалит...
Изменил(а) Pisatel, 20.08.2013 14:02
 
Web
Polarfox
регистры в заголовках всегда одинаковы, это же браузеры а не школосборки.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Pisatel
UPD: v1.2
- Сокращен и оптимизирован код
- Администраторы теперь тоже игнорируются вместе с роботами

Обновил первый пост
Не могу въехать, как обновить аддон. Просьба к администрации выполнить данную операцию, добавив в описание изменения.
Изменил(а) Pisatel, 22.08.2013 06:26
 
Web
jikaka
Просьба к администрации выполнить данную операцию, добавив в описание изменения.

сделано
 
Web
Pisatel
jikaka, благодарю.
Еще вопрос. Дабы не создавать новую тему в PHP, спрошу здесь: как остановить цикл foreach, если совпадение найдено? Знаю, что break, но совпадение найдено функцией stristr. То есть, вот рабочий код:
Загрузить источник  GeSHi: PHP
  1. foreach($bots as $value){
  2. if (stristr($agent[0], $value)){
  3. $bot = 'bot';
  4. break;
  5. } else {
  6. $bot = $_SERVER['HTTP_USER_AGENT'];
  7. }
Добавлено за 0.043 секунд, используя GeSHi 1.0.8.10

Как сделать примерно так:
Скачать исходники  Код
  foreach($bots as $value){
  $bot = (stristr($agent[0], $value)) ? 'bot' {break;} : $_SERVER['HTTP_USER_AGENT'];
}



думаю, мысль понятна:-)
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
FirstPost Panel  →  Панели 4 / 3460 16.03.2017 09:08
News deora panel  →  Панели 0 / 2106 16.09.2016 15:56
Article Deora Panel  →  Панели 0 / 1940 11.09.2016 06:08
UI Top Button Panel  →  Моды 4 / 6513 09.11.2015 19:07
Ajax Forum Post Ratings Panel  →  Плагины 2 / 5965 28.09.2015 09:38
Ajax Forum Post Ratings Panel  →  Плагины 13 / 25550 27.09.2015 23:05
Breadcrumbs SEO Panel  →  Плагины 4 / 8832 06.08.2015 05:47
Глючит xTabs panel  →  Плагины 9 / 7183 03.08.2015 17:55
Ajax Load to 2 panel  →  Вопросы новичков 5 / 7514 22.07.2015 18:44
Ajax Like Dislike Article Panel  →  Панели 8 / 12403 02.07.2015 13:56
Топ 5 пользователей форума
Alex Alex (1,171)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)