• Resolved broccolidev

    (@broccolidev)


    Здравствуйте. Я так понимаю автор знает русский язык, по этому не стал переводить сообщение на английский.
    Ошибки:
    1) После использования плагина, глобальная Переменная $user_ID имеет NULL. Очень много плагинов используют эту и подобные переменные. Если закомментировать код:
    $current_user = $user;
    в wp-cerber/wp-cerber.php:198
    то все начинает работать нормально. Не надо глобальную переменную $current_user заполнять переменной $user, которая получена как аргумент к функции.
    2) Много плагинов, которые используют авторизацию в попап-окнах, делают ajax запрос на сервер с передачей данных для авторизации. Естественно, 99% ajax запросов делаются с помощью jQuery, и по завершению ajax-запроса стоит какой-нибудь обработчик для success/complete событий.
    В итоге, когда какой-то плагин вызывает функцию wp_sign_on, и данные для входа не правильные (например не правильный пароль), то плагин возвращает эту ошибку обратно в попап. Но ajax обработчики complete/success не срабатывают, так как Ваш плагин добавляет 403 ошибку (заголовок) для события wp_login_failed (и срабатывает ajax обработчик для error).
    Предлагаю либо вовсе отказаться от выдачи 403 ошибки, либо не выдавать ее если это ajax запрос:

    if(!defined('DOING_AJAX') || !DOING_AJAX){
    	status_header(403);
    }

    Пожелания:
    1) Добавить возможность отключить режим “Цитадель” вовсе (через админку). Например, на разрабатываемом мною сайте практически постоянно происходит очень много брут атак, где использовано много ip адресов. В итоге “Цитадель” может быть включена практически постоянно.
    2) Возможность очистить таблицу “Активность” (cerber_log) из админ-панели. Приходилось это делать вручную, в бд.

    Ну а в целом плагин шикарен, на данный момент лучший из тех что я видел.
    P.s. еще было б не плохо перевести на русский язык и такие моменты как ‘You have 9 attempts remaining.’

    Спасибо!

    https://www.ads-software.com/plugins/wp-cerber/

Viewing 13 replies - 1 through 13 (of 13 total)
  • Plugin Author gioni

    (@gioni)

    Switching to Russian context…
    Спасибо за развернутый комментарий! С этой нелепой ошибкой согласен, в течение суток выложу обновленный релиз. Это следствие борьбы с чудовищными по своей запутаности и излишней сложности алгоритмами авторизации WordPress по трем разным путям (форма, куки, RPC). Судя по коду, девелоперы и не думали о рефакторинге этой части и оно все нарастало само собой.
    Про AJAX будем думать. Отказываться от заголовков, которые предназначены для fail2ban не хочется, но совместимость с AJAX надо обеспечить. Наверное, на какое-то время DOING_AJAX будет решением. Хреново, что JS разработчики не обрабатывают ошибочные коды. Это общее место в JS девелопменте сейчас. Не обрабатывать ошибки, не следить за тайм-аутами при запросе к серверу. В конце концов даже не знать как расшифровывается AJAX. Это просто какой-то современный аналог Бейсика.
    Насчет пожеланий.
    1) Для отключения поставьте в параметрах Цитадели нули. Далее будем думать насчет кнопки отключения.
    2) Уже в плане на следующий релиз.
    3) С локализацией сообщения на странице авторизации уже разбираюсь.

    Plugin Author gioni

    (@gioni)

    Выложен обновленный релиз без обновления номера версии. Первые два вопроса закрыты.

    Plugin Author gioni

    (@gioni)

    Выложен обновленный релиз с исправленным переводом страницы авторизации.

    Thread Starter broccolidev

    (@broccolidev)

    Спасибо за оперативное исправление ошибок!

    Судя по коду, девелоперы и не думали о рефакторинге этой части и оно все нарастало само собой.

    да, говнокода там достаточно.

    Насчет “цитадели”: все таки надо сделать возможность отключение этого режима, ибо у меня он постоянно включается, даже если поставить все по нулям https://i.imgur.com/yKnHbqF.png (скрин почты).

    Thread Starter broccolidev

    (@broccolidev)

    Нашел еще одну ошибку:
    Если использовать другой url для страницы входа, то ссылка на страницу “Забыли пароль” остается прежней, т.е. /wp-login.php?action=lostpassword

    Thread Starter broccolidev

    (@broccolidev)

    И еще один еррор вылазит, при активном дебаге:

    <br />
    <b>Warning</b>:  Missing argument 2 for cerber_block_add(), called in \wp-content\plugins\wp-cerber\wp-cerber.php on line 300 and defined in <b>\wp-content\plugins\wp-cerber\wp-cerber.php</b> on line <b>314</b><br />

    Plugin Author gioni

    (@gioni)

    Насчет цитадели очень странно. Не должно активироваться ибо в коде есть проверка наличия параметра ciperiod – период за который подсчитываются неудачные попытки.
    if (cerber_get_options('ciperiod') && !cerber_is_citadel()) {

    Не могу воспроизвести ссылку “Забыли пароль”. Есть подозрения что какой-то плагин мешает?

    Thread Starter broccolidev

    (@broccolidev)

    1) Насчет цитадели – да, действительно если установить по нулям – то цитадель отключается. Просто письма на почтовый ящик приходили еще спустя час, после отключения (там было около 3к писем). В общем больше не актуально. А для того чтоб не делать галку, думаю в описании цитадели можно написать “Чтоб отключить цитадель, установите пустые значения”.
    2) Поставил cerber на другой сайт. Если, например, для страницы входа установить url “login”, то “Забыли пароль” по прежнему ведет на “wp-login.php?action=lostpassword”. Оно и не удивительно, так как это жестко прописано в функции wp_lostpassword_url().
    Надо добавить похожий фильтр:

    //php5.3+, 'login/' надо заменить на ссылку указанную в настройках плагина
    add_filter('lostpassword_url', function($lostpassword_url){
    	return str_replace('wp-login.php', 'login/', $lostpassword_url);
    }, 1);

    3) Поставьте WP_DEBUG в true (в wp-config.php). Плагин генерирует очень много нотайсов, очень желательно их поправить)) https://i.imgur.com/yIfjAUU.png, https://i.imgur.com/7mzHTLw.png, https://i.imgur.com/yViXDBn.png
    4) Маленькое пожелание: если будет время и настроение, то добавьте пожалуйста пагинацию на страницу “Активность”)

    Еще раз спасибо, плагин просто супер!

    Plugin Author gioni

    (@gioni)

    1) OK
    2) Мне удалось воспроизвести такое поведение – но на мультисайте только. Так как там немного по другому создается ссылка. Исправлю в текущей версии. Перевыложу релиз.
    3) Всегда проверяю через WP_DEBUG. Про Notice знаю, поправлю это дело в следующем релизе.
    4) Yes! Pagination already in the feature list for next release.

    Тут спасибо не отделаешся ??
    Хороший отзыв не помешает: https://www.ads-software.com/support/view/plugin-reviews/wp-cerber

    Раз уж тут общаемся на русском, то напишу сюда по поводу цитадели ??
    Сейчас на моём сайте сработал режим цитадели. Стояли настройки на 100 неудачных авторизацией, хотя блокировано было всего 12 IP адресов.

    Разумней делать цитадель при превышении числа блокированных адресов (ведь цитадель – от массового подбора паролей, а не единичного?). Единичные адреса должны блокироваться самостоятельно…

    И второе.
    При этом заспамило меня письмами с содержимым:
    “Число активных блокировок на данный момент
    : 12
    Последняя блокировка добавлена: 08.10.2015 10:01″
    Во всех письмах одно и тоже значение. Догадываюсь, что письмо отсылается реально не при увеличении числа заблокированных IP, а при очередном отказе в авторизации с ранее заблокированного IP. Что не верно.. это простой способ заспамить админа сайта.

    Спасибо

    Третье.
    Когда сайт уже в режиме цитадели… нет способа её отключить.
    Единственное что помогло – деактивировать и активировать плагин вновь.

    Четвёртое.
    В Активности вкладка “Заблокировано”. Там много-много раз один и тот же IP адрес. Но решение о его блокировке принимается один раз на период блокировки. Я ожидаю это и увидеть в логе один раз (ошибки авторизации я могу увидеть в другом месте).
    Возможно, это и есть причина срабатывания цитадели..

    Plugin Author gioni

    (@gioni)

    == Важно! Открывайте новый топик. Не пишите в уже закрытые. ===

    Цитадель в первую очередь предназначена для противодействия массовым попыткам с большого количества разных адресов. При этом неважно была ли блокировка отдельного адреса или нет. Зачастую это медленные атаки расчитанные так, чтобы не превысить значения в полях Limit login attempts. Срабатывание Цитадели, по идее, это исключение, например botnet атака на подбор пароля. Основная работа плагина по блокировке должна приходиться на настройки Limit login attempts.
    Насчет второго – переустановите плагин начисто с удалением. В самом последнем релизе 1.5 это поправлено – уведомление приходит по факту добавления новой блокировки.
    Третье – в версии 1.6, которая будет выложена на днях эта возможность есть.
    В Активностях отображается активность по IP адресу независимо от факта его блокировки. “Заблокировано” означает, что адрес заблокирован, но попытки авторизоваться в этого адреса продолжаются. Момент блокировки имеет статус “IP заблокирован”.

Viewing 13 replies - 1 through 13 (of 13 total)
  • The topic ‘Две ошибки два пожелания’ is closed to new replies.