Новости 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

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

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Добрый день. В методе модели разрабатываемого компонента getListQuery формирую запрос к базе данных:

Код
$query->select("*");
$query->from ("#__com_table");
$query->where ("{$where_condition}");
if ($order_query_part) {$query->order("" . $order_query_part); }
$query->setLimit("" . $menu_params->get('displayed_items_number'));

Заданное в настройках компонента (либо пункта меню) количество элементов для отображения извлекатеся и подставляется в метод формирования условия LIMIT - setLimit (). При отображении пункта меню в пользовательской части сайта setLimit() никак не влияет на количество выводимых на страницу элементов, как будто его нет в запросе. Распечатывая запрос посредством:

Код
echo $query->__toString(); exit ();

в браузере вижу запрос, в котором присутствует условие LIMIT с актуальным значением параметра настройки количества оторажаемых элементов на странице. Данный запрос выполняю через вкладку SQL базы данных Joomla в phpMyAdmin и количество выводимых на экран выбранных из таблицы строк соответствует указанному в LIMIT-e количеству результатов.

Подскажите, пожалуйста, почему он не работет должным образом в Joomla, в чём может быть причина?
« Последнее редактирование: 13.06.2017, 12:32:40 от Inoken »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Потому что OFFSET и LIMIT задаются позже в JModelList::getItems()
Код: php-brief
$this->cache[$store] = $this->_getList($this->_getListQuery(), $this->getStart(), $this->getState('list.limit'));
Соответственно, вам нужно задать их в сессии посредством $this->setState('list.start') и $this->setState('list.limit').
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Добавьте в модели такое:
Код: php
protected function populateState( $ordering = null, $direction = null ){
parent::populateState( $ordering, $direction );
$this->setState( 'list.limit', 20 );
}
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
добавил вызов метода setState('list.limit', 'значение_из_настроек') в методе getListQuery (), всё заработало. Aleks.Denezh, а чем обусловлен вызов setState в методе populateState ()?!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Метод populateState() автоматически заполняет состояние модели и вызывается при первом вызове метода getState(), а параметры состояния модели используются не только getListQuery(), но и многими другими методами.
Вы умеете код читать, так его читайте - это занимает не так много времени, во всяком случае, успеете за время ожидания очередного ответа.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
добавил вызов метода setState('list.limit', 'значение_из_настроек') в методе getListQuery (), всё заработало. Aleks.Denezh, а чем обусловлен вызов setState в методе populateState ()?!
Не совсем понял вопрос, метод setState как бы вы сами вызываете )
а метод populateState в вашей модели это банально переопределение метода в родительском классе JModelList который в дебрях себя его и вызывает!
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
благодарю вас за ответы, с назначением метода populateState() всё прояснилось.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

СЕСИЯ при AJAX запросе к php файлу

Автор avantyrist

Ответов: 15
Просмотров: 3173
Последний ответ 20.12.2015, 14:13:43
от robert