AvLab secure Bot сторожевой бот для joomla 1.0.*

Тема в разделе "Собственные разработки форумчан", создана пользователем infoman, 27.12.2008.

  1. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    //***********************************************************************
    // версия 1.0.1(stable edition)
    //Назначение: Бот занимается популярным во время кризиса действием "Протекционизмом" :)
    // ваших компонентов а точнее их внутренних функций таких как task, do ипр.
    // он может работать как в фронте так и в админке (чтобы работал в админке нужно в файте index2.php добавить строки
    // $_MAMBOTS->loadBotGroup( 'system' );
    // $_MAMBOTS->trigger( 'onAfterStart' );
    // сразу после $my = $mainframe->initSessionAdmin( $option, $task ); ну или куда вам самим захочется :)
    // без выше описанного он в админке не работает :)
    // после установки бот сразу переходит в режим по умолчанию (режим работы) чтобы включить режим настройки войдите в в настройки ботов
    // рекомендую настраивать правила бота для пользователей autor дабы не пугать простых и незарегистрированных :)
    // настраивается очень просто в режиме настройки бот отображает текущие и прошлые get и post запросы в компоненте
    // вы видите какие команды происходят при работе компонента и ненужные (секретные) для этого пользователя функции, прописываете их боту
    // после выключения режима настройки бот становиться убийцей всех запрещённых запросов прописанных для определённых групп пользователей
    // он останавливает вполнение команды и пишет о том что данная функция в компоненте ему запрещена!
    // пример построения правил для мамбота увидите в настройках самого мамбота
    // ГЛЮКИ: бот довольно странно работает с визуальным редактором в фронтэнде
    // во время настройки правил фронтэнда если редактируете какие то материалы то после сохранения вылазиют ошибки
    // както связанные с инициализацией головы сайта ПРОБЛЕМА НЕ РЕШЕНА (пока)
    // в рабочем режиме никаких багов не обнаружено.
    //
    // важно! бот не тестировался в режиме настройки с компонентами работающими на аяксе
    // неизвестно способен ли он выявить скрытые get запросы и показать их вам
    // однако в режиме работы все даже ajax запросы будут фиксироваться и обезвреживаться...
    //
    // Автор: Infoman AvLab web studio
    // Авторские права: Лицензия ГНУ/ и /ГЭПЭЕЛЮ PHP (как есть) :)
    //***********************************************************************
    /*
    Большое спасибо sectus
    за посильную ловлю багов
    баги и фиксы:
    бот нечувствителен к регистру
    исправлен цикл поиска компонентов в правилах бота
    исправлен захват option
    баг с header в режиме настройки (компонент com_content) не устранён (он не мешает работе бота)

    скачать securebot v1.0.1.zip
     
    Последнее редактирование: 29.12.2008
  2.  
  3. liga
    Offline

    liga Пользователь

    Регистрация:
    21.10.2008
    Сообщения:
    495
    Симпатии:
    18
    Пол:
    Мужской
    А в кратце и по-русски можно описать основные направления деятельности бота?
    Как я понял он запрещает доступ к информации? или я после глобуса и этого скопища народа вообще не соображаю? :)
     
  4. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Да. Рассказывай что он делает. Не хочу ковырять исходники.
     
  5. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    например вы имеете копонент но вам нужно запретить группе author или просто зарегистрированным или незарегистрированны гостям сайта запретить доступ к например функции просмотра чегото в этом компоненте или функции удаления или загрузки или добавления .....
    тоесть запретить какойто task или do
    например task=save
    для этого вам всеголиш нужно установить бот
    включить его внести правило для этого компонента для нужной группы или нужных групп пользователей
    и всё
    после этого
    если допустим вы вставили правило com_sobi2:sobi2Task,addNew
    для группы author
    и бот в режиме работы
    то бот будет запрещать всем пользователям группы author добавление новых записей в каталог соби2
    правило внесения правил таков
    первым пишется название компонента тоесть option например com_sobi2:
    сразу после названия и двоеточия пишем все нужные вам запретные функции например sobi2Task,addNew sobi2Task,sobi2Details
    эти правила пишутся через пробел где параметр и его значение пишутся через запятую
    для каждого компонента правила пишутся с новой строчки тоесть написал правило для компонента sobi2 нажал энтер пишеш следующие правило
    пример
    com_***:task,**** task,******
    com_***:task,**** task,******
    com_***:task,**** task,******

    ну и так для любых групп
    там заложены стандартные группы(в боте) кроме суперадминистратора

    также в боте можно запретить группам вообще работать с компонентом
    для этого првило пишется так : com_****:
    в этом случае если бот видит что для этой группы пользователей такое правило то он просто непустит пользователя в него ....

    бот может также работать в админке
    например запрещать чтолибо группам менеджер или просто администратор
    для этого нужно в index2.php внести изменения
    разу после строки $my = $mainframe->initSessionAdmin( $option, $task );
    вносим строки
    $_MAMBOTS->loadBotGroup( 'system' );
    $_MAMBOTS->trigger( 'onAfterStart' );

    это позволяет боту подгружаться в админке

    в боте есть режим настройки
    для чего он?
    всё просто дело в том что некоторые компоненты например в админке изпользуют скрытые через яваскрипты запросы (большие кнопки графические)
    в основном эти запросы являются post запросами которые в последующем выливаются в get запрос с параметром mosmsg через mosredicet
    их бот отлавливает тоже и вносит их в сессию потом показывает вам их в режиме настройки
    я вам рекомендую создавать правила в режиме настройки на локальной машине чтобы непугать простых юзеров внезапно вылазиющей таблицей
    после того как вы отловили все параметры компонента
    определили что можно запрещать пользователям определённым группам
    просто вносите эти правила в бот работающего сайта и включаете его

    бот видит и фиксирует все таски и пост таски и если видит что данный таск компонента запрещён то он останавливает выполнение скрипта и выдаёт пользователю предупреждение об ошибке типа НИЗЯ!

    что ещё непонятно?
    бот написан под 1.0.*
    под стандартный sef

    код открытый так что все замечания и совершенствования пишем прям в теме
    в итоге можно получить хороший нужный общественный продукт :)
     
    Последнее редактирование: 29.12.2008
  6. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Замечания по коду:
    Немножечко структурировать код, набить отступы и т.п., а то друг под другом идущие скоб очки в кол-ве 6-ть штук путают.
    предыдущий
    Для системного мамбота не надо делать проверку "были ли загружены параметры ранее", а сразу грузить их.
    Код (PHP):
    1. $request=$_REQUEST;/////входящие параметры гет или пост
    - бесполезная подмена переменной.
    Код (PHP):
    1. $botParams->_params->debug;
    - чера впереди свойства означает, что, по идее, это свойство закрытое(потому как ООП не было до конца реализовано в PHP4), и к нему надо через методы обращаться.
    например, вот так:
    Код (PHP):
    1. $botParams->get('debug', 0);

    Имена переменных должны быть "объясняющими". то что $i - это дебуг, а $id - это $my->gid догадаешься не сразу.
    substr_count - чувствителен к регистру, в некоторых компонентах это может быть существенно, если используется вызов функции с названием $task или идет инклуд файла с названием $task.php на виндовом серваке.
    Код не w3c-шный : ) и не надо что-то обрамлять в <br></br> : )
    Код (PHP):
    1. $grouprule = $botParams->_params->$id;
    2. if (isset ($grouprule)){

    переменная определена, наверное !empty имелось в виду

    Код (PHP):
    1. foreach ($optionrule as $key => $line) {
    2. $count = substr_count($line,$option);
    3. if ($count>0){
    4.  $optlinerule=$line;
    5.  }
    6. }

    А если, что, конечно, маловероятно, но вдруг, в каком-то компоненте будет использоваться переменная с названием другого компонента? : )
    Тутже, после того как нашли компонент нужно прекращать цикл.

    Придрался чуток : )

    Пожелания:
    В режиме настройки выводить настройки для текущего компонента, создавать правила выбрав перемнную из запроса, и тип пользователя.
     
  7. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    да ты прав но я не думаю что переменная option может иметь сразу 2 вариации в составе одного get или post запроса
    в любом случае конструкция $option=mosGetParam( $_REQUEST, 'option', '' ); вернёт только один и них

    substr_count да верю охотно в наборе инструментов гдето валялась функция приведения всех букв в нижний регистр это решит проблему



    писал очень быстро спешил к НГ :)

    усекал всё что можно было усечь оказалось не усекаемое :) менять не стал пусть будет .... :)


    если это небезопасно то усеку как ты сказал...

    а есть разница?


    я как Пушкин он тоже по математике имел твёрдую 2-ку :(
     
  8. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    тип пользователя выводится сверху таблицы (вот тип группы не выводится но в принципе решаемо....

    правила выводится через br сразу в в таком виде чтобы их можно было копировать и вставлять в список правил то есть (параметр,значение)
    ну это просто для удобства чтобы правила в столбик класлись иначе билеберда настоящая особенно с куками и полями textarea
     
  9. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    sectus как ты думаеш нужно ли применять тулз для приведения букв в нижний регистр если значение параметра будет на русском языке?
    точто название параметров будет на английском это понятно но вот значение на русском
    хотя наверно тоже будет иметь место.....
     
  10. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    не надо приводить, stripos можно использовать.
     
  11. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    не работает с русскими буквами
     
  12. liga
    Offline

    liga Пользователь

    Регистрация:
    21.10.2008
    Сообщения:
    495
    Симпатии:
    18
    Пол:
    Мужской
    Блин, ну вот опять началось отписывание кодов, в срочном порядке нужно учить учить и еще раз учить, а то знаю только echo и content :)
     
  13. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    заметь уже выпущена версия 1,0,1 :D см первый пост
     
  14. liga
    Offline

    liga Пользователь

    Регистрация:
    21.10.2008
    Сообщения:
    495
    Симпатии:
    18
    Пол:
    Мужской
    infoman, А я долго соображаю) а тем более слежу за нововведениями)
     
  15. infoman
    Offline

    infoman Недавно здесь

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    вот и зря :)
    сегодня ещё раз обновил
    всё таки вставил и прогнал через фишермен....
    ибо сектус меня прям всего пристыдил :)
    расставил все скобочки как надо ....

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

    надеюсь это окончательно.
    тестируем оцениваем.
     

Поделиться этой страницей

Загрузка...