Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 3375 Просмотров
*

linykc

  • Осваиваюсь на форуме
  • 30
  • 13 / 0
Всем доброго времени суток!
Думаю многим разработчикам и админам приходилось не раз вычищать сайты от злобных шеллов, вирей и прочей грязи залитой на наши драгоценные сайты, всякими турецкими борцами за свободу, ливанскими кибер террористами и прочими надоедливыми ахламонами...
Скажу честно,  как они меня уже зае задолбали!

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

В связи с этим пришло в голову мне такое: а почему бы не поставить капчу на авторизацию в админку? тогда ведь бот не сможет подобрать пароль (ну я на это надеюсь ;D).

В общем к делу:

Задача: повысить безопасность от взлома админки добавлением reCaptha к форме авторизации в панель управления сайта. (пошарив по сусекам интернета, решения готового я так и не нашел - пришлось мудрить "свое" - в кавычках потому как все же способы подключения реCAPTCHA к компонентам и пр. найти вполне реально.)

Решение:

1) включаем сам плагин реCAPTCHA, получаем у Google ключики для своего домена, включаем в настройках плагина тему "white" (сие по желанию, просто сочетается лучше с видом страницы авторизации bluestork)
2) редактируем файл/добавляем в папку HTML самго шаблона админки темплейт модуля mod_login  - в нем выводится форма авторизации
/administrator/templates/bluestork/html/mod_login/default.php или /administrator/modules/mod_login/tmpl/default.php
(прикладываю уже готовый код, думаю что тут добавлять будет понятно)
Код
// No direct access.
defined('_JEXEC') or die;
JHtml::_('behavior.keepalive');

// recaptcha start`s here - подключаем плагин
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
// recaptcha end`s here

?>
<form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="form-login">
<fieldset class="loginform">

<label id="mod-login-username-lbl" for="mod-login-username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label>
<input name="username" id="mod-login-username" type="text" class="inputbox" size="15" />

<label id="mod-login-password-lbl" for="mod-login-password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label>
<input name="passwd" id="mod-login-password" type="password" class="inputbox" size="15" />

<label id="mod-login-language-lbl" for="lang"><?php echo JText::_('MOD_LOGIN_LANGUAGE'); ?></label>
<?php echo $langs; ?>

            <?php // recaptcha start`s here - здесь выводим капчу ?>
             <div id="dynamic_recaptcha_1" style="clear: both;"></div>
       <?php // recaptcha end`s here ?>
            
            
<div class="button-holder">
<div class="button1">
<div class="next">
<a href="#" onclick="document.getElementById('form-login').submit();">
<?php echo JText::_('MOD_LOGIN_LOGIN'); ?></a>
</div>
</div>
</div>

<div class="clr"></div>
<input type="submit" class="hidebtn" value="<?php echo JText::_( 'MOD_LOGIN_LOGIN' ); ?>" />
<input type="hidden" name="option" value="com_login" />
<input type="hidden" name="task" value="login" />
<input type="hidden" name="return" value="<?php echo $return; ?>" />
<?php echo JHtml::_('form.token'); ?>
</fieldset>
</form>


3) редактируем оверрайд-файл login.php самого шаблона админки, точнее его часть ( впринципе это не обязательно, и делается лишь для наведения марафета в отображении формы логина)

Код
<?php // ищем div ID "lock" - это картинка с замочком. вставляем сразу после него div с классом "clr" - без него все смотрится очень криво ?>
<div id="lock"></div>
                     <div class="clr"></div>


4) правим функцию login в компоненте com_login (/administrator/components/com_login/controller.php) - здесь происходит проверка валидности логина/пароля

Код

public function login()
{
// Check for request forgeries.
JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN'));

$app = JFactory::getApplication();

$model = $this->getModel('login');
$credentials = $model->getState('credentials');
$return = $model->getState('return');

        // recaptcha start`s here
   $post = JRequest::get('post');      
        JPluginHelper::importPlugin('captcha');
        $dispatcher = JDispatcher::getInstance();
        $res = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
        if(!$res[0]){
           $app->redirect($return);
        }
        // recaptcha end`s here
        
$result = $app->login($credentials, array('action' => 'core.login.admin'));

if (!($result instanceof Exception)) {
$app->redirect($return);
}

parent::display();
}



5) проверяем работу.


Результат: в форме авторизации красуется своими каракулями reCaptcha. при неверном вводе проверочного кода, происходит редирект назад на страницу логина, даже при правильно введенных паре логин-пароль.

P.S. решение требует тестирования, поэтому прошу всех желающих отписываться в этой теме. ( в аттаче все редактируемые файлы)
Хорошо бы конечно написать системный плагин, чтоб не редактировать файлы после каждого обновления, но тут у меня к сожалению опыта очень мало, так что если кто поможет с написанием плагина - буду рад. Думаю доп защита админ части никогда не будет лишней.

P.P.S. Работал я с последней на текущий момент версией Joomla 2.5.14

« Последнее редактирование: 26.08.2013, 23:36:24 от linykc »
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
Извиняюcь не по теме реCAPTCHA, но по моему мнению эффективнее решение у плагина backendtoken
Смысл его что он выдаст приглашение на авторизацию если в урле будет введен правильный токен с секретным словом типа /administrator/index.php?token=MySecretKey
Я его еще упростил и если введен неправильный токен, то идет не редирект а просто пустая страница 404
так серверу легче пусть стучатся сколько угодно. По логам вообще нет попыток подбора потому что адрес /administrator выдает 404 в этом еще и некоторое запутывание на предмет выявление принадлежности к CMS
*

linykc

  • Осваиваюсь на форуме
  • 30
  • 13 / 0
Извиняюcь не по теме реCAPTCHA, но по моему мнению эффективнее решение у плагина backendtoken
Смысл его что он выдаст приглашение на авторизацию если в урле будет введен правильный токен с секретным словом типа /administrator/index.php?token=MySecretKey

да о подобном решении я знаю, сам пользуюсь плагином adminexile- делает тоже самое.
но имхо переборщить с безопасностью невозможно... я бы и амбарный замок на админку навесил если бы мог... =)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться