Новости Joomla

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

7 января 2026 года греческому разработчику Тассосу Мариносу сообщили об уязвимости в системном плагине Tassos Framework, который входит в состав его расширений для Joomla.

⚠️ Проблема затрагивает следующие расширения:
- Convert Forms - конструктор форм обратной связи для Joomla
- EngageBox - конструктор всплывающих окон для Joomla
- Google Structured Data - пакет плагинов микроразметки для Joomla
- Advanced Custom Fields - пакет плагинов пользовательских полей (видео-сервисы, карты и иже с ними)
- Smile Pack - пакет расширений
- MailChimp Auto-Subscribe

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

👉 Суть уязвимости.
Уязвимость заключалась в том, как плагин Tassos Framework обрабатывал определенные AJAX-запросы через com_ajaxточку входа Joomla. При определенных условиях внутренняя функциональность фреймворка могла быть вызвана без надлежащих ограничений.

В худшем случае это могло позволить неавторизованному злоумышленнику читать файлы, доступные веб-серверу. Это также могло позволить удалять файлы с сервера при выполнении определенных условий.

При определенных обстоятельствах запросы к базе данных могли быть изменены для извлечения данных из базы данных Joomla. В совокупности эти возможности потенциально могли быть использованы для повышения уровня доступа и выполнения несанкционированного кода.

В настоящее время нет никаких доказательств того, что эта уязвимость была использована в реальных условиях.

Немедленно обновите расширения до безопасных версий (Joomla 4/5/6 | Joomla 3):
- Convert Forms - v5.1.1 / v.4.1.1
- EngageBox - v.7.1.1 / v,6,3,9
- Google Structured Data - v.6.1.1 / v.5.6.9
- Advanced Custom Fields - v.3.1.1 / v.2.8.10
- Smile Pack - v.2.1.1 / v.1.2.4.
- MailChimp Auto-Subscribe - v.5.1.1+ / v.5.0.4

Все указанные версии включают в себя релиз безопасности плагина Tassos Framework System Plugin v6.0.62.

Если у вас установлено несколько расширений Tassos, достаточно обновить только одно, чтобы применить патч. Однако всегда рекомендуется обновлять все расширения.

@joomlafeed

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

Google Summer of Code (GSoC) - программа компании Google, которая позволяет участникам программы под руководством опытных наставников писать код для организаций, занимающейся открытым исходным кодом. Joomla принимает участие в этой программе не в первый раз и в 2026 году снова включена в список GSoC. Для программы утверждается список "идей", воплотить которые должны участники под руководством наставников.

Проекты Joomla в рамках программы GSoC 2026.

Проект I: Ajax-бэкенд.
- Действия в административной панели без необходимости обновлять страницу.
- Автоматическое сохранение содержимого во время редактирования.
- Расширенный фильтр - поиск и фильтрация по пользовательским полям.

Проект II: Автоматизация рабочих процессов (workflow + task scheduler).
Joomla имеет функцию процессов и планировщика задач. Теперь эти две функции следует объединить, чтобы пользователь мог настраивать назначенные рабочие процессы таким образом, чтобы переходы выполнялись автоматически, с возможностью точного определения времени. Должна быть возможность создавать циклы или прямые запланированные рабочие процессы. Предполагается, что интерфейс должен учитывать хороший пользовательский опыт, удобство использования и современные стандарты доступности. Ожидается, что будет добавлен интерфейс для управления процессами и их расписанием на страницах категорий и материалов. Так же ожидается, что сторонние компоненты также смогут воспользоваться этим функционалом.

Проект III: Мультикатегории.
В настоящее время Joomla! не позволяет назначать один элемент нескольким категориям. Хотя система тегов часто используется в качестве замены, существует острая потребность в нативной поддержке нескольких категорий, чтобы привести Joomla! в соответствие с другими современными системами управления контентом.

Проект IV: Обучение с подкреплением на основе отзывов переводчиков.
Joomla собирается использовать автоматический перевод документации. В каждом языке есть свои специфические слова, характерные для Joomla. Предполагается обучать языковые модели, используя обратную связь от переводчиков, чтобы постоянно улучшать качество переводов и учитывать специфические языковые особенности Joomla.

Принять участие GSoC 2026
Подробнее о проектах Joomla GSoC 2026
Чат GSoC в Mattermost (международное сообщество Joomla)

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

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

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Вывод товаров
« : 23.09.2010, 13:20:18 »
Есть список id(из vm_product) товаров, которые (товары) просто надо все вывести, в виде списка категории. как мне надо организовать id, чтоб я мог их отобразить? И как их отобразить?
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #2 : 23.09.2010, 13:28:45 »
А как сделать это в коде? К примеру есть масcив arr_pr[] в нем через любой разделитель id товаров, как я могу их вывести?
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #4 : 23.09.2010, 13:31:23 »
Я делаю выборку из базы по параметру, создаю массив, в него вношу каждый id что отвечает условию. потом мне надо эти товары вывести. Все это пишу на php
« Последнее редактирование: 23.09.2010, 13:35:54 от fire86 »
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #6 : 23.09.2010, 14:09:43 »
спасибо. Добавьте плз пример


*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #8 : 23.09.2010, 14:22:54 »
как можно использовать функцию, хотя бы с 1 id, или массивом. Я конечно обязательно открою и посмотрю, тока с телефона неудобно))) тк с него сижу
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Re: Вывод товаров
« Ответ #9 : 23.09.2010, 14:31:31 »
Единственный нюанс - этой функции требуется не id, а product_sku

Код
require_once (CLASSPATH."ps_product.php");
$ps_product = new ps_product;
$ps_product->product_snapshot($product_sku);
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #10 : 23.09.2010, 15:05:09 »
спасибо)
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #11 : 23.09.2010, 18:43:05 »
Написал свой мини фильтр по параметрам

<?php

$session =& JFactory::getSession();
$c_width = $session->get('width');
$session =& JFactory::getSession();
$c_height = $session->get('height');
$session =& JFactory::getSession();
$c_diametr = $session->get('diametr');
$session =& JFactory::getSession();
$c_season = $session->get('season');

// указываем параметры для подключения к MySQL
$host='localhost'; // имя хоста
$database='radialki_ice'; // имя базы данных
$user='radialki_ice'; // заданное вами имя пользователя
$pswd='ice2580'; // заданный вами пароль
// подключаемся к MySQL
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

define("db_prefix","");

$res = mysql_query('SELECT * FROM jos_vm_product');

for ( $product_id="0"; $i<="10000"; $i++)
 {  $es1=mysql_query('SELECT * FROM  jos_vm_product WHERE product_id="'.(int)$product_id.'"');
      $ow1 = mysql_fetch_array($es1);
      $product_width = $ow1['product_width'];
      $product_height = $ow1['product_height'];
      $product_length = $ow1['product_length'];
      $product_s_desc = $ow1['product_s_desc'];
      $product_sku = $ow1['product_sku'];
      if ($c_width != "0") {if ($product_width == $c_width) {$y1="1";} else {$y1="0";};} else {$y1="1";}
  if ($c_height != "0") {if ($product_height == $c_height) {$y2="1";} else {$y2="0";};} else {$y2="1";}
  if ($c_diametr != "0") {if ($product_length == $c_diametr) {$y3="1";} else {$y3="0";};} else {$y3="1";}
  if ($c_season != "0") {if ($product_s_desc == $c_season) {$y4="1";} else {$y4="0";};} else {$y4="1";}
  $y5 = $y1+$y2+$y3+$y4;
  if ($y5 == "4") {
  require_once( CLASSPATH . 'ps_product.php');
   $ps_product = new ps_product;
   $ps_product->product_snapshot($product_sku);}
  unset($y5);
 }
?>

В итоге получил:

Warning: require_once(CLASSPATHps_product.php) [function.require-once]: failed to open stream: No such file or directory in /public_html/components/com_php/files/mod_to on line 39

Fatal error: require_once() [function.require]: Failed opening required 'CLASSPATHps_product.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /public_html/components/com_php/files/mod_to on line 39

как это можно починить? Помогите
« Последнее редактирование: 23.09.2010, 19:07:25 от fire86 »
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Re: Вывод товаров
« Ответ #12 : 23.09.2010, 21:14:30 »
в таком контексте у тебя нет переменной CLASSPATH - пропиши полный путь.
возможно require_once тоже не сработает - попробуй просто include
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Re: Вывод товаров
« Ответ #14 : 23.09.2010, 21:16:58 »
используй нативные средства доступа к базе (например $db= new ps_db) - прописывание пароля это жесть
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #15 : 23.09.2010, 21:22:20 »
используй нативные средства доступа к базе (например $db= new ps_db) - прописывание пароля это жесть
Не спорю. Поменяю, как разберусь с выводом. Сейчас попробую разобраться и найти как загружается окружение
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #16 : 24.09.2010, 11:45:53 »
Не получается, не могу понять как. Подскажите что можно почитать, чтобы разобратся, или посоветуйте что необходимо прописать, ночь провозился и не понял.
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #18 : 24.09.2010, 11:56:56 »
Не могу понять как подгрузить окружение, пересмотрел модули там есть общее

if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
   require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
   require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
}

Подумал оно, попробывал, не получилось, тоже самое но для virtuemart_parser. Потом искал что еще общее и не нашел. Пробывал менять пути - не помогло. Спрашивал Google, тот ничего об загрузке\подгрузке и тд не знает. 
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #20 : 24.09.2010, 12:03:02 »
С ней, с виртом, при помощи модуля PHP pages
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #21 : 24.09.2010, 12:13:57 »
Я так понял, если ответа нет, то собака тут зарыта, сейчас буду искать
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #23 : 24.09.2010, 12:19:46 »
Делает из ПХП что-то типа статьи и выводит, как пункт меню. Конечно могу все поменять, только посоветуйте как. Коротко суть: Форма и обработчик, 2 PHP файла, 1 заполняет форму передает 2рому, тот выводит товары по заданным параметрам. Делаю уже 4 дня, не могу сделать. Посоветуйте что-нибуть
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #25 : 24.09.2010, 12:31:16 »
вот форма, если коротко, то выбирает из селетка 4 переменных, заносит их в сесию. Возможно передачу переделать на пост, конечно, но тк я пользовался модкулем PHP pages, то сделал через сесию. Обработчик читает глобальные ищет по ним в БД, что подошло, то выводит


<table border="0" cellspacing="0" cellpadding="0" width="98%">
<tbody>
<tr>
<td><br />
<?php
$session =& JFactory::getSession();
$c_wigth = $session->get('width');
$session =& JFactory::getSession();
$c_height = $session->get('height');
$session =& JFactory::getSession();
$c_diametr = $session->get('diametr');
$session =& JFactory::getSession();
$c_season = $session->get('season');



?>

<form method="post" id="frm">
<table border="0" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td width="100" bgcolor="#ececec">
<p style="margin:5px;"><strong>Ширина</strong></p>
</td>
<td width="100" bgcolor="#ececec">
<p style="margin:5px;"><strong>Высота</strong></p>
</td>
<td width="100" bgcolor="#ececec">
<p style="margin:5px;"><strong>Диаметр</strong></p>
</td>
<td width="100" bgcolor="#ececec">
<p style="margin:5px;"><strong>Лето</strong></p>
</td>
<td width="100" bgcolor="#ececec">
<p style="margin:5px;"><strong>Зима</strong></p>
</td>
<td width="100" bgcolor="#ececec">
<p style="margin:5px;"><strong>Всеcезонные</strong></p>
</td>
<td rowspan="2" valign="middle" bgcolor="#ececec">
<p style="margin:5px;">


<input name="search_tyre" type="submit" value="Выбрать" /></p>
</td>
</tr>
<tr>
<td>
<p>
<?php if ($c_wigth != NULL) {$c110 = $c_wigth;} else {$c110="Выберите";}?>
<select name="wigth">
<?php echo "<option  value='0'>". $c110 . "</option>";?>
 <option value="6.5">6.5</option>
 <option value="7">7</option>
 <option value="7.5">7.5</option>
 <option value="30">30</option>
  <option value="31">31</option> <option value="32">32</option> <option value="33">33</option> <option value="35">35</option> <option value="37">37</option> <option value="120">120</option> <option value="135">135</option> <option value="145">145</option> <option value="155">155</option> <option value="160">160</option> <option value="165">165</option> <option value="175">175</option> <option value="185">185</option> <option value="195">195</option> <option value="205">205</option> <option value="215">215</option> <option value="225">225</option> <option value="235">235</option> <option value="245">245</option> <option value="255">255</option> <option value="265">265</option> <option value="275">275</option> <option value="285">285</option> <option value="295">295</option> <option value="305">305</option> <option value="315">315</option> <option value="325">325</option> </select></p>
</td>
<td>
<p>
<?php if ($c_height != NULL) {$c111 = $c_height;} else {$c111="Выберите";}?>
<select name="height">
<?php echo "<option  value='0'>". $c111 . "</option>";?>
<option value="9.5">9.5</option> <option value="10.5">10.5</option> <option value="11.5">11.5</option> <option value="12.5">12.5</option> <option value="25">25</option> <option value="30">30</option> <option value="35">35</option> <option value="40">40</option> <option value="45">45</option> <option value="50">50</option> <option value="55">55</option> <option value="60">60</option> <option value="65">65</option> <option value="70">70</option> <option value="75">75</option> <option value="80">80</option> <option value="85">85</option> <option value="90">90</option> </select></p>
</td>
<td>
<p>
<?php if ($c_diametr != NULL) {$c112 = $c_diametr;} else {$c112="Выберите";}?>
<select name="diametr">
<?php echo "<option  value='0'>". $c112 . "</option>";?>

<option value="R12">12</option> <option value="R13">13</option> <option value="R14">14</option> <option value="R15">15</option> <option value="R16">16</option> <option value="R17">17</option> <option value="R18">18</option> <option value="R19">19</option> <option value="R20">20</option> <option value="R21">21</option> <option value="R22">22</option> <option value="R24">24</option> </select></p>
</td>
<td>
<p><input name="season" type="radio" value="1" <?php if ($c_season == "1") {echo "checked='checked'"; } ?> /></p>
</td>
<td>
<p><input name="season" type="radio" value="2" <?php if ($c_season == "2") {echo "checked='checked'";}?> /></p>
</td>
<td>
<p><input name="season" type="radio" value="3" <?php if ($c_season == "3") {echo "checked='checked'";}?> /></p>
</td>
</tr>
</tbody>
</table>
</form>
<form method="post" id="frm1">
<input style="display:none;" name="wigth" type="radio" value="0" checked="checked" />
<input style="display:none;" name="height" type="radio" value="0" checked="checked"  />
<input style="display:none;" name="diametr" type="radio" value="0" checked="checked"  />
<input style="display:none;" name="season" type="radio" value="<?php echo NULL ?>" checked="checked" />
<input name="search_tyre" type="submit" value="Сбросить" />
</form>

<?php
$wigth = $_POST['wigth'];$height = $_POST['height'];$diametr = $_POST['diametr'];$season = $_POST['season'];


$session =& JFactory::getSession();
$session->set( 'width', $wigth );
$session =& JFactory::getSession();
$session->set( 'height', $height );
$session =& JFactory::getSession();
$session->set( 'diametr', $diametr );
$session =& JFactory::getSession();
$session->set( 'season', $season );
?>

 <br /><br /></td>
</tr>
</tbody>
</table>

Вот обработчик,

<?php

$session =& JFactory::getSession();
$c_width = $session->get('width');
$session =& JFactory::getSession();
$c_height = $session->get('height');
$session =& JFactory::getSession();
$c_diametr = $session->get('diametr');
$session =& JFactory::getSession();
$c_season = $session->get('season');

// указываем параметры для подключения к MySQL
$host='localhost'; // имя хоста
$database='radialki_ice'; // имя базы данных
$user='radialki_ice'; // заданное вами имя пользователя
$pswd='ice2580'; // заданный вами пароль
// подключаемся к MySQL
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

define("db_prefix","");

$res = mysql_query('SELECT * FROM jos_vm_product');

for ( $product_id="0"; $i<="10000"; $i++)
 {  $es1=mysql_query('SELECT * FROM  jos_vm_product WHERE product_id="'.(int)$product_id.'"');
      $ow1 = mysql_fetch_array($es1);
      $product_width = $ow1['product_width'];
      $product_height = $ow1['product_height'];
      $product_length = $ow1['product_length'];
      $product_s_desc = $ow1['product_s_desc'];
      $product_sku = $ow1['product_sku'];
      if ($c_width != "0") {if ($product_width == $c_width) {$y1="1";} else {$y1="0";};} else {$y1="1";}
  if ($c_height != "0") {if ($product_height == $c_height) {$y2="1";} else {$y2="0";};} else {$y2="1";}
  if ($c_diametr != "0") {if ($product_length == $c_diametr) {$y3="1";} else {$y3="0";};} else {$y3="1";}
  if ($c_season != "0") {if ($product_s_desc == $c_season) {$y4="1";} else {$y4="0";};} else {$y4="1";}
  $y5 = $y1+$y2+$y3+$y4; echo $$y5;
  if ($y5 == "4") {
  require_once( CLASSPATH . '/../../components/com_virtuemart/classes/ps_product.php');
   $ps_product = new ps_product;
   $ps_product->product_snapshot($product_sku);}
  unset($y5);
 }
?>
« Последнее редактирование: 24.09.2010, 12:34:17 от fire86 »
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #27 : 24.09.2010, 12:37:43 »
не могу вывести товары по заданным параметрам, именно вывести.
 Warning: require_once(CLASSPATHps_product.php) [function.require-once]: failed to open stream: No such file or directory in /public_html/components/com_php/files/mod_to on line 39

Fatal error: require_once() [function.require]: Failed opening required 'CLASSPATHps_product.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /public_html/components/com_php/files/mod_to on line 39
Гложет мысля, что подход неправильный. ЧТо модуль PHP pages ваще не нужен, а можно как-то сделать красиво, но как не знаю, и что еще хуже, не знаю, откуда надо копать и куда..
*

fire86

  • Захожу иногда
  • 54
  • 0 / 0
Re: Вывод товаров
« Ответ #29 : 24.09.2010, 12:41:09 »
Тю. наверно пропустил, счас поправлю, гляну, что выдет отпишусь
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart 1.1.8 - Наличие: Есть (по умолчанию) + Наличие: ZZZ (бр

Автор Nessy74

Ответов: 6
Просмотров: 3294
Последний ответ 22.01.2016, 13:24:17
от AzMandius
Мод Статистика для VirtueMart 1.0.x

Автор sveneld

Ответов: 13
Просмотров: 5723
Последний ответ 20.07.2015, 20:42:25
от sveneld
VirtueMart 1.1.8 - при клике на Категорию Товара всегда от

Автор Nessy74

Ответов: 6
Просмотров: 2230
Последний ответ 12.12.2014, 16:00:36
от Nessy74
Изображение наличия товара в зависимости

Автор Aleks_El_Dia

Ответов: 2
Просмотров: 1774
Последний ответ 13.03.2014, 04:58:54
от Aleks_El_Dia
Выпадающий список со всеми товарами [Полн

Автор murat

Ответов: 29
Просмотров: 9225
Последний ответ 30.09.2013, 10:09:38
от be.maxi