Срочные исправления безопасности в MODX 2.5.2


Привет, друзья! У меня для вас отличная новость!

Команда MODX работала всю ночь не покладая рук, чтобы подготовить для нас срочный выпуск MODX 2.5.2, закрывающий все известные на сегодня уязвимости.
  • Скрыты критичные системные настройки [#13170]
  • Запрет возможности локального подключения файлов (LFE) [#13177]
  • Запрет возможности подмены пути при запуске $modx->runProcessor [#13176]
  • Запрет неавторизованного доступа к процессорам [#13175]
  • Запрет подмены пути в параметре action объекта modConnectorResponse [#13173]
  • Запрет слепой SQL инъекции при получении xPDOObject [подробности]

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

В первую очередь за улучшения безопасности нужно благодарить Евгения Борисова и Николая Ланец. Надеюсь, что практика быстрого выпуска исправлений безопасности продолжится и впредь.

Обновление уже доступно для загрузки с официального сайта и обновления на modhost.pro

Лично я уже обновил все сайты (включая магазин и панель управления хостингом), чем и вам рекомендую заняться прямо сейчас!

P.S. Обратите внимание, что из-за многочисленных изменений некоторые дополнения могут работать некорректно. Я уже выпустил новые версии pdoTools, ms2Gallery, miniShop2 и Uploadify.
15 november 2016, 06:19    Василий Наумкин   G+  
1    2104 +24

Comments (114)

  1. Антон 15 november 2016, 06:45 # 0
    Сейчас, как только Уткин свой simpleUpdater обновит, так сразу…
    1. Илья Уткин 15 november 2016, 09:34 # +7
      Можно обновляться)
    2. Николай Ланец 15 november 2016, 07:07 # 0
      В первую очередь за улучшения безопасности нужно благодарить Евгения Борисова и Николая Ланеца. Надеюсь, что практика быстрого выпуска исправлений безопасности продолжится и впредь.
      А я надеюсь, что будет чуть больше культуры в общении как здесь, так и за пределами. А то из списка как минимум мое это:
      Скрыты критичные системные настройки [#13170]
      Запрет возможности подмены пути при запуске $modx->runProcessor [#13176]
      Запрет неавторизованного доступа к процессорам [#13175]
      Запрет подмены пути в параметре action объекта modConnectorResponse [#13173]
      Плюс довольно объемное общение с MODX team в личке. А в ответ получаешь такое.
      Так-то пофиг, а так-то вообще не располагает. С учетом того, что Женя жаловался, что его за его же труды не поблагодарили (как минимум), особенно странно видеть такое поведение с его стороны. Постараюсь больше Жени не касаться вообще никаким боком.
      1. Евгений Борисов 15 november 2016, 07:34 # +9
        Постараюсь больше Жени не касаться вообще никаким боком.
        Как-то вообще не располагает, когда ты предлагаешь фиксы которые вообще не фиксы.
        Постараюсь больше не реагировать на твои заскоки. Вводи и дальше людей в заблуждение.
        1. Сергей Шлоков 15 november 2016, 07:57 # +11
          Справедливости ради, кабы Николай не поднял эту волну, так и сидели бы ровно за «стеклянной дверью». Да и тебе профит вон какой прилетел. :) И ребят из MODX попинали. 2 года назад ты один их не смог растолкать. А щас толпой навалились и результат почти мгновенный. Даже Марк по-русски заговорил :)) Прогресс на лицо. )
          1. Сергей Шлоков 15 november 2016, 08:39 # +2
            Добавлю ещё, что сила, конечно, в правде, но в сильной правде силы больше :))
        2. Сергей Шлоков 15 november 2016, 08:02 # +2
          Запрет возможности подмены пути при запуске $modx->runProcessor [#13176]
          Запрет неавторизованного доступа к процессорам [#13175]
          Запрет подмены пути в параметре action объекта modConnectorResponse [#13173]
          Может через пару месяцев напишешь про то, как это можно было сделать? Интересно. Ведь даже авторы MODX не сообразили.
          1. Евгений Борисов 15 november 2016, 08:34 # +8
            $_REQUEST['action'] = '../../new/action';
            $_REQUEST['action'] = '....//....//new/action';
            1. Сергей Шлоков 15 november 2016, 08:39 # 0
              Так просто? Мда.
              1. Николай Ланец 15 november 2016, 22:45 # 0
                Для некоторых не все так просто. Есть системные процессоры, которые проверяют авотризацию, и которые обходятся с применением этой уязвимости:
                Запрет неавторизованного доступа к процессорам [#13175]
          2. Александр 15 november 2016, 10:09 # +2
            дай Вам бог здоровья побольше)) И Вам, и Евгению, спасибо огромное!!!
            1. Paul B. 15 november 2016, 13:22 # 0
              Николай, благодарю!
            2. Василий Столейков 15 november 2016, 09:45 # +4
              Лично я уже обновил все сайты (включая магазин и панель управления хостингом)
              То-то сегодня утром тут в сообществе последние записи были 2012-го года )))

              В первую очередь за улучшения безопасности нужно благодарить Евгения Борисова и Николая Ланеца.
              Ну да, себя же неудобно благодарить, хотя и ты внёс очень большой вклад в эту волну, спасибо и тебе!

              Очень радостная новость, спасибо за ваши старания!
              1. Zulya 15 november 2016, 10:17 # +2
                Привет. В этом обновлении решили проблему с уязвимостью, которая была описана тут modx.pro/security/10345-blind-sql-xpdo/? Если да, то классно!
                1. Mark Hamstra 15 november 2016, 12:44 # +5
                  Да, это одно из исправлений xPDO. Разработчики должны еще убедиться, что ввод данных пользователем продезинфицировать, хотя.
                  ///---///
                  Yes, that's one of the xPDO fixes. Developers should still make sure user input is sanitised though.
                  1. Сергей Шлоков 15 november 2016, 13:48 # +2
                    Dear Mark, please, don't use the Google translater. It makes such a funny translation so some times it's very difficult to understand. So we all have to read the English version of your comment to understand what you mean. :))
                    1. Василий Наумкин 15 november 2016, 13:52 # 0
                      I believe it is because of great respect to the russian community.

                      And our english comments looks like this, by the way =)
                      1. Сергей Шлоков 15 november 2016, 13:56 # +1
                        Ja, ja. Das ist fantastisch für uns. ))

                        П.С. Прямо мастер Йода ))
                        Если официальный анонс должен получить другое имя добавил, что мы пропустили, пожалуйста, дайте мне знать, и я постараюсь, чтобы заставить кого-то обновить, что.
                        1. Константин Ильин 15 november 2016, 14:35 # +1
                          Can use translate.yandex.ru/

                          Like it better translates :)
                        2. Сергей Шлоков 16 november 2016, 07:20 # +2
                          Кстати, «looks like this» значит «похоже на это», т.е. на что-то конкретное. Если ты имел ввиду «Выглядят похоже», то правильнее сказать «comments look similar». Если «Похожи как 2 капли воды» — look the same.
                          Помню это ещё со школы. А сейчас могу сто раз пытаться запомнить какое-нибудь слово, на следующий день и не вспомню. :(

                          П.С. Ну и окончание -s используются только для 3-го лица в единственном числе. Comment looks, comments look. ))
                  2. Василий Столейков 15 november 2016, 10:20 # +2
                    Заметил баг в новой версии MODX — в управлении пакетами при нажатии на кнопку Посмотреть детали не подгружаются версии установленных пакетов:



                    Раньше я так постоянно чистил систему от старых ненужных версий…
                    1. Сергей Шлоков 15 november 2016, 12:12 # +4
                      Это из-за этого. Можно закомментировать пока не исправят. Не думаю, что это повлияет на безопасность.
                      1. Кудашев Сергей 24 november 2016, 12:06 # +1
                        Если нужно, чтобы эта опция снова заработала до нового релиза, то необходимые исправления можно посмотреть тут. Всего одна строчка :)

                        Или ждать нового релиза, исправление уже добавили в новую ветку.
                      2. Zulya 15 november 2016, 10:22 # 0
                        Хочу обновить сайт с помощью приложения UpdateModx.
                        Когда выбираю последнюю версию, и нажимаю обновить, на странице выводится такое сообщение:
                        ../modx.zip is empty — download failed
                        В чем может причина и как можно решить, подскажите?
                        P.S Когда первый раз устанавливала Modx revo, использовала версию Advanced для установки.
                        1. Илья Уткин 15 november 2016, 10:41 # 0
                          Попробуйте simpleUpdater вместо UpdateModx
                          1. Zulya 15 november 2016, 10:49 # 0
                            Хорошо. Попробую. Спасибо, Илья.
                            1. Константин Обухов 15 november 2016, 11:33 # 0
                              Подскажите откуда качать его? С modx.com или где-то в другом месте?
                              1. Илья Уткин 15 november 2016, 14:03 # 0
                                Да, из официального репозитория modx.com
                          2. Вася 15 november 2016, 10:53 # +2
                            Странно, что не поблагодарили дядю Зенита. Ведь он на практике доказал, что сложный префикс не поможет защитить сайт.
                            1. Александр 15 november 2016, 11:00 # 0
                              Увы, даже поблагодарив, он не сможет узнать или ответить на данную благодарность…
                              1. Василий Наумкин 15 november 2016, 11:29 # +3
                                Не надо вводить общественность в заблуждение.

                                Я поблагодарил его лично — у него есть второй аккаунт, вполне рабочий.
                                1. Александр 15 november 2016, 12:14 # 0
                                  Пардоньте, только недавно прочитал о том, что он доказал свои слова о слепой иньекции…
                              2. Василий Наумкин 15 november 2016, 11:28 # +17
                                Потому что дядя Зенит не дал ничего, кроме самого факта возможности подбора префикса.

                                Дяде Васе пришлось самому выискивать уязвимые места в логах, читать теорию и проверять её на практике. А потом доказывать, насколько это опасно дяде Джейсону и дяде Марку при помощи дяди Жени, который написал реальный пример использования уязвимости.

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

                                Так что про дядю Зенита никто в MODX не слышал, зато его благодарим мы, всем сообществом.
                                1. Владимир 15 november 2016, 12:08 # +5
                                  А дяде Васе спасибо за все и отдельный поклон за терпение.
                                  1. Mark Hamstra 15 november 2016, 12:50 # +7
                                    Я благодарен всем, кто способствовал в получении этих уязвимостей фиксированных. Если официальный анонс должен получить другое имя добавил, что мы пропустили, пожалуйста, дайте мне знать, и я постараюсь, чтобы заставить кого-то обновить, что.
                                    ///---///
                                    I'm thankful to everyone that contributed into getting these vulnerabilities fixed. If the official announcement should get another name added that we missed, please let me know and I'll try to get someone to update that.
                                    1. Александр Москвин 15 november 2016, 13:05 # 0
                                      ну так если бы не он никто бы не парился, префиксы сменили бы и всё.
                                      Он доказал, что нужно людей в первую очередь слушать и слышать.
                                      А мог бы сломать всё к чертям, быть плохим и злым.
                                      1. Василий Наумкин 15 november 2016, 13:12 # +7
                                        Ну так купи ему пива, в чём проблема-то?

                                        Или я должен написать ему любовное письма и поблагодарить за то, что он взломал мой сайт, вместо подробного объяснения самого алгоритма взлома?

                                        Еще раз: я всё это выяснял самостоятельно, консультировал меня Евгений Борисов. Правоту Зенита я признал и выразил своё восхищение его навыками (но не манерами). Ни строчки кода в новую версию MODX он не прислал.

                                        Твоё беспокойство судьбой Зенита лично я понять не могу. Среди меня бытует мнение, что он может постоять за себя самостоятельно, без публичных адвокатов.
                                        1. Александр Москвин 15 november 2016, 14:39 # -10
                                          опять негативно ответил, а зря
                                          «нужно людей в первую очередь слушать и слышать».
                                          За такое твоё отношение к людям, на его месте я поступил по другому.
                                          1. Василий Наумкин 15 november 2016, 14:44 # +3
                                            У меня такое ощущение, что люди в нашей стране утрачивают логическое мышление и способность воспринимать письменную речь.

                                            Это печально.
                                            1. Александр 15 november 2016, 22:12 # -1
                                              xD Увы, но скорость деградирования нашего населения поражает. После нескольких лет работы в интернет магазине, я это испытал на себе (общение с клиентами). Теперь, когда заказчики спрашивают «Как сделать?» я им отвечаю «Как Вы бы сделали для умственно-отсталых детей?».

                                              Это и правда печально.
                                              1. Александр Москвин 16 november 2016, 13:08 # -1
                                                я про другое имел ввиду «надменное» поведение.
                                                Не однократно на мои ответы (пусть дублирующие) была такая реакция.
                                                Но раз минус, значит минус.
                                                Я видел эту тему (с зенон) и видел всю надменность людей, высказал своё недовольство. Но всё решили, всё поправили.
                                                Проще надо быть и люди потянутся.
                                                1. Александр 29 november 2016, 01:18 # 0
                                                  комментарий был направлен не лично к Вам
                                                  1. Александр Москвин 01 december 2016, 13:08 # +1
                                                    Ладно уж, наверное я был не в настроении)
                                                    Удачи Вам)
                                  2. Hiddenski 15 november 2016, 11:42 # 0
                                    Спасибо. Просто спасибо
                                    1. Александр Москвин 15 november 2016, 13:04 # 0
                                      Странно, что modx раньше не ломали с такой уязвимостью.
                                      Круто, что сделали быстрое обновление)
                                      1. Василий Наумкин 15 november 2016, 13:05 # +6
                                        Кому надо — прекрасно ломали и молчали в тряпочку, чтобы не портить себе бизнес.
                                        1. Александр Москвин 15 november 2016, 13:09 # +2
                                          но тем не менее, если бы не Вы ничего бы не было и так бы и дальше ломали, за это огромное спасибо)
                                          1. Василий Наумкин 15 november 2016, 13:23 # +10
                                            Да все молодцы, хватит уже выяснять — кто больше.

                                            Закрыты все известные уязвимости в MODX Revolution и это само по себе очень круто. Лично я, наконец-то, смогу спокойно поспать, а то очень нервная выдалась неделя.
                                            1. Александр 15 november 2016, 13:48 # 0
                                              На счет спокойствия Вы правы, спасибо Вам еще раз =)
                                              Но прошу заметить, что это все только известные уязвимости. Вот бы вести отдельный лог по безопасности сайта и в случае проникновения хакера — отдавать лог разработчикам на диагностику…
                                              1. Василий Наумкин 15 november 2016, 13:50 # +1
                                                Как ты планируешь вести отдельный лог по безопасности?
                                                Как отличать плохие запросы от хороших?

                                                А так — у каждого нормального сайта ведётся лог посещений и ошибок, именно через них я и разбирался с тем, что делал zenit.
                                      2. Bluetenstadt 15 november 2016, 13:39 # +5
                                        Все красавчики.
                                        1. Владимир 15 november 2016, 13:56 # 0
                                          Безопасность — главное!
                                          Спасибо всем, полегчало на душе.

                                          Мелкая, но досадная ерунда, тут уже писали о ней, все пакеты при обновлении исчезли из вкладки «Загруженная версия», где можно было удалять прежние версии.
                                          1. Кудашев Сергей 24 november 2016, 12:07 # +1
                                            Если нужно, чтобы эта опция снова заработала до нового релиза, то необходимые исправления можно посмотреть тут. Всего одна строчка :)

                                            Или ждать нового релиза, исправление уже добавили в новую ветку.
                                            1. Владимир 24 november 2016, 12:11 # +1
                                              Да, я видел ваш патч, спасибо!

                                          2. r5uY40 15 november 2016, 20:12 # +3
                                            Огромное спасибо всем, кто обнаружил, доказал важность и любым способом повлиял на устранение брешей в безопасности! И, если это имеет хоть какое то значение, Евгений и Николай, пожалуйста, не ссорьтесь. В результате вы сработали как единая команда. Каждый отвечал за свой участок работ и результат достигнут. Спасибо!
                                            1. Николай Ланец 15 november 2016, 22:51 # 0
                                              Вообще, с этим обновлением связаны не только фиксы безопасности, но и серьезная деградация метода sortby(). Теперь не получится выполнить типа sortby («1, 2 ASC, modxResource.id») или типа того. Комментарий. Конечно, мало это кого затронет, но ограничения есть. Надо будет дорабатывать этот метод.
                                              1. Григорий Коленько 16 november 2016, 00:59 # 0
                                                Ого. Как теперь с этим запросом исхитряться?
                                                1. Николай Ланец 16 november 2016, 03:56 # +1
                                                  А нет, погорячился. Они прислушались ко мнению и в итоге не стали жестко эскейпить название колонки (первый вариант был такой), а просто стали проверять на валидность. Но и здесь, кстати, тоже курьез есть :) Теперь нельзя использовать названия колонок, содержащих слово union. К примеру, вот такой вариант приведет к ошибке: $q->sortby(«unionition»);
                                                  SQL injection attempt detected in sortby column; clause rejected
                                                  1. Евгений Борисов 16 november 2016, 04:01 # +2
                                                    $query = $modx->newQuery(modResource::class)
                                                        ->sortby('menuindex','ASC')
                                                        ->sortBy('pagetitle', 'ASC');
                                                    
                                                    $out = $modx->getCollection(modResource::class, $query);
                                                2. Рустам С 18 november 2016, 14:45 # 0
                                                  Обновился спасибо!
                                                  Но получил кучу проблем… пока с ходу кажется что это pdotools
                                                  У меня уходит вся память и сервер в 504 и тп после обновления, через 2 минуты после запуска.
                                                  Происходит переполнение памяти на боевом сервере (не заметно если тестировать локально, тк нет нагрузки)

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

                                                  Ни кто не замечал?
                                                  1. Пётр Молчанов 18 november 2016, 16:04 # +2
                                                    Все обновились без проблем и только у тебя они возникли. Сделал бы хоть пример на тестовом сайте…
                                                    1. Рустам С 18 november 2016, 17:12 # 0
                                                      я могу показать, если интересно…
                                                      пока не успел потестить просто, сделаю если надо будет и отдельный тест
                                                    2. Василий Наумкин 18 november 2016, 16:41 # 0
                                                      pdoTools тоже нужно обновить, там есть исправление сортировки в новой версии MODX.

                                                      А так — нет, никто про такие проблемы больше пока не писал.
                                                      1. Рустам С 18 november 2016, 17:12 # 0
                                                        спасибо, ставил из гитхаба и магазина… пока разницы не было, думаю попробовать откатить
                                                        1. This comment was deleted.
                                                          1. This comment was deleted.
                                                            1. This comment was deleted.
                                                              1. This comment was deleted.
                                                                1. This comment was deleted.
                                                                  1. This comment was deleted.
                                                                    1. This comment was deleted.
                                                                      1. This comment was deleted.
                                                                        1. This comment was deleted.
                                                                          1. This comment was deleted.
                                                                            1. This comment was deleted.
                                                                              1. This comment was deleted.
                                                                                1. This comment was deleted.
                                                                                  1. This comment was deleted.
                                                                                    1. This comment was deleted.
                                                                                      1. This comment was deleted.
                                                                                        1. This comment was deleted.
                                                                                          1. This comment was deleted.
                                                                                        2. This comment was deleted.
                                                                                          1. This comment was deleted.
                                                                                          2. This comment was deleted.
                                                                                            1. This comment was deleted.
                                                                                              1. This comment was deleted.
                                                                                                1. This comment was deleted.
                                                                                2. Кудашев Сергей 24 november 2016, 00:41 # +2
                                                                                  После данного обновления в Управлении Пакетами при Просмотре деталей перестала отображаться «Загруженная версия». В error.log пишется ошибка «You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC, modTransportPackage.release_index DESC LIMIT 20' at line 1».

                                                                                  Проблема в том, что в данном обновлении в методе sortby из xpdoquery.class.php стал обязательным второй аргумент и старый код обрабатывающий пакеты перестал работать. Если кому-то нужно, чтобы эта опция заработала до нового релиза, то необходимые исправления можно посмотреть тут. Всего одна строчка :)
                                                                                  1. Алексей Смирнов 14 december 2016, 09:38 # +1
                                                                                    Всем привет.
                                                                                    Еще кое-какая мелкая проблемка:
                                                                                    [[!+modx.user.id:memberof=`Administrator`:then=`Пользователь авторизирован. Имеет группу Администратор`]] 
                                                                                    Теперь после обновления срабатывает Всегда и для авторизированных пользователей и обычных, выводя весь текст что Авторизирован, хотя плейсхолдер:
                                                                                    [[!+modx.user.id:memberof=`Administrator`]] 
                                                                                    срабатывает верно: если пользователь не зарегин выводит 0, иначе 1
                                                                                    Но при этом есть косяк с обработкой THEN. Что посоветуете? Может быть есть кто-то повыше квалификацией и сможет объяснить, профиксить. Спасибо!
                                                                                    1. Гриборий 14 december 2016, 14:19 # 0
                                                                                      Попробуй добавить :else=``
                                                                                      1. Алексей Смирнов 16 december 2016, 10:09 # 0
                                                                                        Естессно проверял — поведение не изменилось.
                                                                                        1. Владимир 16 december 2016, 10:39 # +1
                                                                                          феном вместо модификаторов, это и лучше и функциональнее
                                                                                          {if $_modx->user.id == 1} *** {/if}
                                                                                          (вместо == 1 нужное вам условие), а модификаторы в MODX надо забыть
                                                                                          PS и в доках пора столбец с феномом в модификаторах завести
                                                                                          1. Василий Наумкин 16 december 2016, 10:50 # +2
                                                                                            Эта страница — перевод официальных доков.

                                                                                            А модификаторы Fenom в его собственном разделе.
                                                                                            1. Владимир 16 december 2016, 10:54 # 0
                                                                                              Василий, все так, но ссылку в доках из обычных модификаторов на феномвские хотя бы, ибо вряд ли есть смысл использовать обычные модификаторы (ИМХО).
                                                                                              1. Василий Наумкин 16 december 2016, 11:04 # +3
                                                                                                Ну так сделай pull-request — документация открытая.

                                                                                                Почему всё Василий должен делать?
                                                                                                1. Владимир 16 december 2016, 11:06 # +2
                                                                                                  Ты прав, это лень все.
                                                                                      2. Павел Гвоздь 16 december 2016, 10:33 # +2
                                                                                        Юзать Феном. :)
                                                                                        1. Илья Уткин 17 december 2016, 15:01 # 0
                                                                                          А если так?
                                                                                          [[!+modx.user.id:memberof=`Administrator`:eq=`1`:then=`Пользователь авторизован. Имеет группу Администратор`]] 
                                                                                          1. Алексей Смирнов 17 december 2016, 19:22 # 0
                                                                                            Проверял уже и так (is). Не срабатывает.
                                                                                            Таким образом встает вопрос — как проверить пользователя… Пришел на ум пока только такой вариант:
                                                                                            [[!*id:input=`[[!+modx.user.id:memberof=`Administrator`]]`:is=`1`:then=`Авторизрован`:else=`НЕ авторизирован`]]
                                                                                            
                                                                                            Вот как-то так…
                                                                                            1. Владимир 17 december 2016, 20:24 # 0
                                                                                              {if $_modx->user.sudo ==1}
                                                                                              admin
                                                                                              {/if}
                                                                                              с феномом все равно удобнее
                                                                                              посмотрите, все что есть в $_modx->user
                                                                                              <tbody>
                                                                                                    {foreach $_modx->user as $key => $value}
                                                                                                  <tr>
                                                                                                    <td>{$key}</td>
                                                                                                    <td>{$value}</td>
                                                                                                  </tr>
                                                                                                  {/foreach}
                                                                                                </tbody>
                                                                                              </table>
                                                                                              1. Владимир 17 december 2016, 21:50 # 0
                                                                                                PS только проверять надо primary_group, т.к. sudo (неограниченные права) можно любому пользователю назначить.
                                                                                                1. Павел Гвоздь 17 december 2016, 22:35 # +1
                                                                                                  Так есть модификатор memberof (ismember) для проверки принадлежности к группе. Текущий проверяется так:
                                                                                                  {if (0 | memberof : 'Administrator')}
                                                                                                      Пользователь является администратором
                                                                                                  {else}
                                                                                                      Пользователь не является администратором
                                                                                                  {/if}
                                                                                                  Вместо «0» можно указать ID любого пользователя.
                                                                                                  1. Владимир 17 december 2016, 22:46 # 0
                                                                                                    primary_group по умолчанию равна 1 для админов
                                                                                                    {if $_modx->user.primary_group ==1}
                                                                                                    admin
                                                                                                    {/if}
                                                                                                    такой вариант мне больше нравится)
                                                                                                    PS под «больше нравится» я имею ввиду проверку по ID, а не по имени группы.
                                                                                                    1. Василий Столейков 18 december 2016, 15:07 # 0
                                                                                                      В последнее время у меня перестал работать этот модификатор фенома (и все его синонимы во всех вариантах), правда только на одном из моих сайтов. Уже хотел поднимать тревогу, но нашел обходной рабочий вариант:
                                                                                                      {if $_modx->isMember('Users')}
                                                                                                      	Для юзеров
                                                                                                      {else}
                                                                                                      	Для всех остальных
                                                                                                      {/if}
                                                                                                      
                                                                                                      P.S. Понятно что группу можно подставлять любую
                                                                                                      1. Павел Гвоздь 18 december 2016, 15:36 # 0
                                                                                                        А ведь и правда, не работает… Отправил PR Василию.

                                                                                                        И не работает он не в последнее время, а вообще, насколько я вижу. Т.к. при проверке анонимов, он будет проверять первого существующего пользователя.
                                                                                                        1. Владимир 18 december 2016, 20:38 # 0
                                                                                                          Павел, подскажи, может я что то не понимаю, $_modx->user.primary_group дает нам ID группы юзера, т.е. любое условие и т.п. можно составить, разве этого не достаточно? Модификатор memberof что дает, чем лучше\удобне? Какой с него прок? Или просто что б был?
                                                                                                          1. Павел Гвоздь 18 december 2016, 20:44 # +2
                                                                                                            Primary group — это основная группа пользователя. Это группа, в которую пользователь был добавлен раньше всего (или та, которая расположена выше остальных) в списке групп пользователя. Так вот, если у тебя пользователь в нескольких группах, а тебе надо узнать, состоит ли он в той, которая не записана в свойство primary_group, то твоим способом ты этого не узнаешь. Поэтому правильнее всего проверять именно так:
                                                                                                            {if $_modx->isMember('Administrator')}
                                                                                                            или так:
                                                                                                            {if (0 | memberof : 'Administrator')}
                                                                                                            1. Владимир 18 december 2016, 20:45 # +1
                                                                                                              Во, спасибо, все понятно.
                                                                                                          2. Василий Столейков 18 december 2016, 22:02 # 0
                                                                                                            Просто гость (или подставляемый 0) видел защищённый контент любой группы (Manager, Administrator). До каких-то пор работало исправно, потом перестало.
                                                                                                            Я заметил за всё время пользования феномом уже у нескольких модификаторов такие глюки — не работают как должны, зато их более длинный вариант через $_modx работает как надо…
                                                                                                            1. Droug 20 december 2016, 11:12 # 0
                                                                                                              Я уже писал об этом. Это, видимо, теперь нормальное поведение для modx, после обновления до 2.5.2
                                                                                              2. Михаил 17 december 2016, 12:15 # -1
                                                                                                Не знаю, совпадение это или нет. Но через какое-то время после появления этой новости modx.pro/security/10266-critical-vulnerability-in-modx-revolution/ у меня взломали два сайта. Оба на модхосте. Последствия этого взлома описаны тут searchengines.guru/showthread.php?t=951958
                                                                                                1. Павел Гвоздь 17 december 2016, 14:08 # +1
                                                                                                  А вы обновились на версию 2.5.2 перед взломом?
                                                                                                  1. Михаил 17 december 2016, 15:44 # 0
                                                                                                    Нет. Влезли до обновления до версии 2.5.2.
                                                                                                You need to login to create comments.