Новости Joomla

‼️👩‍💻 Релиз безопасности Astroid 3.3.11 - шаблона-конструктора для Joomla.

‼️👩‍💻 Релиз безопасности Astroid 3.3.11 - шаблона-конструктора для Joomla.

14 часов назад (на момент публикации заметки) была обнаружена уязвимость в популярном шаблоне-конструкторе Astroid Framework. При атаке на сайт устанавливается бэкдор — системный плагин под названием plg_system_blpayload. Если вы обнаружили этот плагин на своем веб-сайте, значит, он скомпрометирован, и вам необходимо восстановить чистую резервную копию, созданную до установки плагина.

Уязвимость позволяет загружать файлы на сайт и в дальнейшем получить права администратора Joomla.
В рамках атаки (из-за которой и была обнаружена уязвимость) на сайт устанавливался плагин plg_system_blpayload, который при каждой загрузке страницы снаружи он скрытно связывается с (платформой для SEO, работающей на черном рынке (ссылку помещать не будем, просим поверить на слово). Получает список скрытых спам-ссылок (сайты азартных игр, фишинга, мошенничества), подобранный под ваш домен, затем внедряет эти ссылки в HTML-код вашей страницы непосредственно перед рендером - невидимые для посетителей, но полностью читаемые поисковыми роботами. Это называется "отравление SEO" ("отрпавление поисковой выдачи").

Однако, эта уязвимость может использоваться в других целях. Поэтому необходимо срочно проверить ваши сайты, где стоит Astroid Framework и обновить его до версии не ниже 3.3.11. Релиз безопасности выпущен 4 часа назад (на момент написания заметки).

Скачать релиз безопасности Astroid

@joomlafeed

👩‍💻 Вышел Quantum Manager 3.3.0 - медиа менеджер для Joomla.

👩‍💻 Вышел Quantum Manager 3.3.0 - медиа менеджер для Joomla.

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

v.3.3.0. Что нового?
- Joomla 6. Компонент полностью совместим с Joomla 6, плагин обратной совместимости не требуется.
- Рефакторинг. Полностью удалён устаревший код, оставшийся в наследство от версий для Joomla 3.
- Новые настройки для SVG. Новые параметры фильтрации SVG-файлов.
- Улучшена безопасная функция предварительного просмотра SVG-файлов. Благодаря новым механизмам фильтрации восстановлена ​​возможность безопасного предварительного просмотра SVG-изображений.
- Исправления ошибок. Исправлены ошибки с данными EXIF ​​и обновлена ​​библиотека EXIF.

Читать новость
Скачать расширение

Также обновление получил плагин пользовательского поля Radicalmultifield для совместимости с новым Quantum Manager.

Репозиторий GitHub
Релиз на GitHub

@joomlafeed

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

ak1976

  • Новичок
  • 3
  • 0 / 0
Не знаю будет ли в новой версии поддержка разбиения на страницы при древовидной структуре отображения комментариев, а т.к. у меня JComments используется в т.ч. и для гостевой, то понадобилась эта функция.

Может еще кому пригодится.
Настройки (количество сообщений на страницу, количество вкладок с номерами) берутся из аналогичных настроек при постраничной структуре отображения. За количество сообщений берется количество сообщений верхнего уровня.

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

Файл components\com_jcomments\model\jcomments.php
Спойлер
[свернуть]

Файл components\com_jcomments\jcomments.ajax.php
Спойлер
[свернуть]

Файл components\com_jcomments\jcomments.php
Спойлер
[свернуть]

и файл components\com_jcomments\tpl\default\tpl_tree.php
Спойлер
[свернуть]

Все исправленные файлы во вложении. Архив нужно распаковать в каталоге componetns. JComents версии 2.2.0.2

P.S. Исправления и архив обновлены до последней актуальной версии 24.11.2011

[вложение удалено Администратором]
« Последнее редактирование: 24.11.2011, 04:09:00 от ak1976 »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Во-первых, вы испортили функцию подсчета количества комментариев для объекта, и она будет "врать", считая только комментарии первого уровня. Это мягко говоря неправильно. Да и зачем, там есть параметр $filter, через который можно легко и быстро добавить нужное условие (только там, где это требуется - при вычислении номера страницы).

Во-вторых, есть сомнения в производительности при более-менее "ветвистом" обсуждении (т.е. допустим когда речь идет о 5-7 уровнях комментариев) - поле path и было заведено для разбивки на страницы, но производительность я не измерял. Изначально планировалась динамическая загрузка дерева, по частям.

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

А в целом, да, интересно. А посмотрю что в результате получилось более детально вечером.
« Последнее редактирование: 22.11.2011, 17:29:51 от smart »
*

ak1976

  • Новичок
  • 3
  • 0 / 0
Во-первых, вы испортили функцию подсчета количества комментариев для объекта, и она будет "врать", считая только комментарии первого уровня. Это мягко говоря неправильно. Да и зачем, там есть параметр $filter, через который можно легко и быстро добавить нужное условие (только там, где это требуется - при вычислении номера страницы).
Спасибо за подсказку, вернул getCommentsCount в первоначальный вид и поправил соответствующим образом getCommentsTree
кстати там пришлось закомментировать блок
Код: php
		#if ($canComment == 0) {
# $total = JCommentsModel::getCommentsCount($object_id, $object_group);
# if ($total == 0) {
# return '';
# }
#}

Иначе, для зарегистрированных пользователей (только они у меня могут писать комментарии) не показывался блок навигации. Вместо закомментированного кода вставил
Код: php
		$total = JCommentsModel::getCommentsCount($object_id, $object_group, $config->get('template_view') == 'tree' ? "\nAND level = 0" : "");

Во-вторых, есть сомнения в производительности при более-менее "ветвистом" обсуждении (т.е. допустим когда речь идет о 5-7 уровнях комментариев) - поле path и было заведено для разбивки на страницы, но производительность я не измерял. Изначально планировалась динамическая загрузка дерева, по частям.
Тут я согласен, не совсем красивое решение с "like", но лучшего я в данном случае не придумал. Была мысль добавить в таблицу #__jcomments поле topparent в которое для всех дочерних элементов заносить id предка 0 уровня (т.е. это второй элемент в поле path), тогда по этому полю можно было построить индекс и вопросов с производительностью бы точно не возникло. Но это потребовало бы еще правки файлов jcomments.ajax.php и jcomments.class.php, в части сохранения комментария или написания плагина. Я правильно понимаю, что можно написать плагин на событие onAfterCommentChanged и вставить в него обновление указанного поля?
Для уменьшения количества правок пошел пока по более легкому пути. Проблем пока нет, может быть по тому что комментариев меньше 1000.

Была еще мысль поправить сортировку по убыванию дат. Текущий вариант с исправлением getCommentsList (сортировка по c.parent, c.date DESC) не совсем корректен, т.к. сортирует по дате комментария первого уровня, а хотелось бы чтобы при ответе на комментарий вся ветка "всплывала" на верх. Для этого нужно в таблице #__jcomments нужно поле update_time - обновления ветки. При сохранении комментария будет обновляться update_time у записи начала ветки (ее id мы можем взять из path)

В-третьих надо проверить, будет ли работать функция навигации к комментарию по ссылке. Т.е. при оригинальной постраничной навигации если в URL присутствует идентификатор комментария, то будет активизирована нужная страница и будет осуществлен переход к комментарию. Сходу не уверен, сработает ли это в описанной модификации.
В данной модификации это не работало. Я не знал об этом функционале, спасибо за подсказку. Чтобы все заработало нужно поправить файл components\com_jcomments\jcomments.ajax.php
Спойлер
[свернуть]
и файл components\com_jcomments\jcomments.php
Спойлер
[свернуть]

P.S. хотел добавить вложение с последней версией измененных файлов, но выдалась ошибка, файл с архивом 22 кБ
Код
Папка upload заполнена. Попробуйте файл меньшего размера или свяжитесь с Администратором. 
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Спасибо за подсказку, вернул getCommentsCount в первоначальный вид и поправил соответствующим образом getCommentsTree
кстати там пришлось закомментировать блок
не совсем понятно, почему не работало... внесенные  изменения не должны влиять на тот кусок кода. Проверьте на всякий случай еще раз... Бывают конечно исключения, но вообще у меня лишние куски кода редко встречаются.

Тут я согласен, не совсем красивое решение с "like", но лучшего я в данном случае не придумал. Была мысль добавить в таблицу #__jcomments поле topparent в которое для всех дочерних элементов заносить id предка 0 уровня (т.е. это второй элемент в поле path), тогда по этому полю можно было построить индекс и вопросов с производительностью бы точно не возникло. Но это потребовало бы еще правки файлов jcomments.ajax.php и jcomments.class.php, в части сохранения комментария или написания плагина. Я правильно понимаю, что можно написать плагин на событие onAfterCommentChanged и вставить в него обновление указанного поля?
ну это можно обновить по сути одним SQL-запросом, в принципе, действительно, введение некоего поля thread_id, которое бы у всех вложенных комментариев вело на корневой комментарий ветки решило бы проблему с LIKE, и сделало бы ненужным поле path (разве что оставить его для динамической загрузки ветки). Я подумаю, может быть действительно добавлю такое поле.

Была еще мысль поправить сортировку по убыванию дат. Текущий вариант с исправлением getCommentsList (сортировка по c.parent, c.date DESC) не совсем корректен, т.к. сортирует по дате комментария первого уровня, а хотелось бы чтобы при ответе на комментарий вся ветка "всплывала" на верх. Для этого нужно в таблице #__jcomments нужно поле update_time - обновления ветки. При сохранении комментария будет обновляться update_time у записи начала ветки (ее id мы можем взять из path)
если добавить thread_id, то это будет очень просто и быстро

В данной модификации это не работало
P.S. хотел добавить вложение с последней версией измененных файлов, но выдалась ошибка, файл с архивом 22 кБ
Обновите первое сообщение темы, разместив в нем актуальные изменения во всех файлах, и замените приаттаченный файл на более свежий.
*

ak1976

  • Новичок
  • 3
  • 0 / 0
не совсем понятно, почему не работало... внесенные  изменения не должны влиять на тот кусок кода. Проверьте на всякий случай еще раз... Бывают конечно исключения, но вообще у меня лишние куски кода редко встречаются.
Судя по всему, это для оптимизации производительности. Если пользователь не может писать комментарии, вычисляется количество комментариев и если оно равно 0 сразу возвращается пустая строка, без дополнительных запросов. Больше число комментариев (переменная $total) в данной функции нигде не использовалась. А мне она понадобилась, но при наличии прав на написание комментариев переменная $total не вычислялась.
Поправил данный кусок так.
Код: php
$total = JCommentsModel::getCommentsCount($object_id, $object_group, $config->get('template_view') == 'tree' ? "\nAND level = 0" : "");
if ($canComment == 0 && $total == 0) {
return '';
}
это ближе всего к логике оригинала.

ну это можно обновить по сути одним SQL-запросом, в принципе, действительно, введение некоего поля thread_id, которое бы у всех вложенных комментариев вело на корневой комментарий ветки решило бы проблему с LIKE, и сделало бы ненужным поле path (разве что оставить его для динамической загрузки ветки). Я подумаю, может быть действительно добавлю такое поле.
...
если добавить thread_id, то это будет очень просто и быстро
Было бы замечательно внести эти дополнения в компонент. Если нужно, могу сделать все необходимые правки, включая интерфейс админки (дабы сэкономить ваше время, для более актуальных дел). Только наверное, лучше это сделать уже после выхода новой версии.


Обновите первое сообщение темы, разместив в нем актуальные изменения во всех файлах, и замените приаттаченный файл на более свежий.
обновил.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
А мне она понадобилась, но при наличии прав на написание комментариев переменная $total не вычислялась.
да, ведь если не делать разбивку на страницы, общее количество не требуется...

Было бы замечательно внести эти дополнения в компонент. Если нужно, могу сделать все необходимые правки, включая интерфейс админки (дабы сэкономить ваше время, для более актуальных дел). Только наверное, лучше это сделать уже после выхода новой версии.
Вполне возможно, что это включим и в текущую версию. Если у меня сегодня появится окошко свободного времени, попробуем реализовать идею с thread_id и посмотрим на производительность. А что касается идеального оттачивания кода - в этом смысла особого нет, ибо я очень сильно переработал компонент и код (в том числе и модели) весьма прилично изменился.

обновил.
угу, спасибо, я посмотрю
*

pasha4ur

  • Захожу иногда
  • 79
  • 0 / 1
Как сделать, чтобы последние комментарии выводились вначале?


Сорри. Обновил. Все работает.
 Пошел делать автору памятник  *DRINK*
« Последнее редактирование: 07.01.2012, 12:10:51 от pasha4ur »
*

Cheb

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Вот если бы такая доработка была к версии 2.3.0 - цены бы вам не было!
*

jiva242

  • Осваиваюсь на форуме
  • 14
  • 2 / 0
Приветствую.

Столкнулся с идентичной задачей - разбивка на страницы в древовидном шаблоне. Буду рад отблагодарить материально за изготовление такого патча для версии 2.3.0 (Joomla 1.5). Единственное отличие - это сделать ограничение уровня вложенности до пяти ответов, после чего комментарии переставали бы сдвигаться вправо, но отвечать можно было бы.

Можно в личку или в скайп (odin-v-pole-voin)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать элемент со страницы?

Автор SpaceRabbit

Ответов: 6
Просмотров: 6112
Последний ответ 01.08.2011, 22:43:27
от Arrovil
Как использовать суффикс класса страницы?

Автор vdenu

Ответов: 2
Просмотров: 2859
Последний ответ 17.02.2011, 00:25:32
от vdenu