К содержанию

Срочные исправления безопасности в 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 ноября 2016, 03:19
modx.pro
9 778
Реклама

Комментарии: 90

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

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

            Очень радостная новость, спасибо за ваши старания!
              Zulya
              Zulya Старожил
              15 ноября 2016, 10:17
              Привет. В этом обновлении решили проблему с уязвимостью, которая была описана тут modx.pro/security/10345-blind-sql-xpdo/? Если да, то классно!
                Mark Hamstra
                Mark Hamstra Старожил
                15 ноября 2016, 12:44
                Да, это одно из исправлений xPDO. Разработчики должны еще убедиться, что ввод данных пользователем продезинфицировать, хотя.
                ///---///
                Yes, that's one of the xPDO fixes. Developers should still make sure user input is sanitised though.
                  Сергей Шлоков
                  Сергей Шлоков Эксперт
                  15 ноября 2016, 13:48
                  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. :))
                    Василий Наумкин
                    Василий Наумкин Администратор
                    15 ноября 2016, 13:52
                    I believe it is because of great respect to the russian community.

                    And our english comments looks like this, by the way =)
                      Сергей Шлоков
                      Сергей Шлоков Эксперт
                      15 ноября 2016, 13:56
                      Ja, ja. Das ist fantastisch für uns. ))

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

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



                Раньше я так постоянно чистил систему от старых ненужных версий…
                  Василий Столейков
                  Василий Столейков Проверенный
                  15 ноября 2016, 10:21
                  Почему-то картинка не обрабатывается уже — просто вставил код из файлохранилища…
                    Василий Наумкин
                    Василий Наумкин Администратор
                    15 ноября 2016, 12:29
                    Да это я сдуру обновил там Uploadify с перезаписью всех чанков — отчего то решил, что они там совсем стандартные.

                    Поэтому сначала ссылка на авторизацию пропала, а щас вот это. Поправлю в течении часа.
                    Василий Наумкин
                    Василий Наумкин Администратор
                    15 ноября 2016, 11:27
                    Упс
                      Сергей Шлоков
                      Сергей Шлоков Эксперт
                      15 ноября 2016, 12:12
                      Это из-за этого. Можно закомментировать пока не исправят. Не думаю, что это повлияет на безопасность.
                        Кудашев Сергей
                        Кудашев Сергей Проверенный
                        24 ноября 2016, 12:06
                        Если нужно, чтобы эта опция снова заработала до нового релиза, то необходимые исправления можно посмотреть тут. Всего одна строчка :)

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

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

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

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

                                Так что про дядю Зенита никто в MODX не слышал, зато его благодарим мы, всем сообществом.
                                  Владимир
                                  Владимир Старожил
                                  15 ноября 2016, 12:08
                                  А дяде Васе спасибо за все и отдельный поклон за терпение.
                                    Mark Hamstra
                                    Mark Hamstra Старожил
                                    15 ноября 2016, 12:50
                                    Я благодарен всем, кто способствовал в получении этих уязвимостей фиксированных. Если официальный анонс должен получить другое имя добавил, что мы пропустили, пожалуйста, дайте мне знать, и я постараюсь, чтобы заставить кого-то обновить, что.
                                    ///---///
                                    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.
                                      Александр Москвин
                                      15 ноября 2016, 13:05
                                      ну так если бы не он никто бы не парился, префиксы сменили бы и всё.
                                      Он доказал, что нужно людей в первую очередь слушать и слышать.
                                      А мог бы сломать всё к чертям, быть плохим и злым.
                                        Василий Наумкин
                                        Василий Наумкин Администратор
                                        15 ноября 2016, 13:12
                                        Ну так купи ему пива, в чём проблема-то?

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

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

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

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

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

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

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

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

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

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

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

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

                                                      А так — нет, никто про такие проблемы больше пока не писал.
                                                        Рустам С
                                                        Рустам С Старожил
                                                        18 ноября 2016, 17:12
                                                        спасибо, ставил из гитхаба и магазина… пока разницы не было, думаю попробовать откатить
                                                          Это сообщение было удалено
                                                            Это сообщение было удалено
                                                              Это сообщение было удалено
                                                                Это сообщение было удалено
                                                                  Это сообщение было удалено
                                                                    Это сообщение было удалено
                                                                      Это сообщение было удалено
                                                                        Это сообщение было удалено
                                                                          Это сообщение было удалено
                                                                            Это сообщение было удалено
                                                                              Это сообщение было удалено
                                                                                Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                            Это сообщение было удалено
                                                                              Это сообщение было удалено
                                                                              Это сообщение было удалено
                                                                                Это сообщение было удалено
                                                                                  Это сообщение было удалено
                                                                                    Это сообщение было удалено
                                                                Кудашев Сергей
                                                                Кудашев Сергей Проверенный
                                                                24 ноября 2016, 00:41
                                                                После данного обновления в Управлении Пакетами при Просмотре деталей перестала отображаться «Загруженная версия». В 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 стал обязательным второй аргумент и старый код обрабатывающий пакеты перестал работать. Если кому-то нужно, чтобы эта опция заработала до нового релиза, то необходимые исправления можно посмотреть тут. Всего одна строчка :)
                                                                  Алексей Смирнов
                                                                  Алексей Смирнов Проверенный
                                                                  14 декабря 2016, 09:38
                                                                  Всем привет.
                                                                  Еще кое-какая мелкая проблемка:
                                                                  [[!+modx.user.id:memberof=`Administrator`:then=`Пользователь авторизирован. Имеет группу Администратор`]]
                                                                  Теперь после обновления срабатывает Всегда и для авторизированных пользователей и обычных, выводя весь текст что Авторизирован, хотя плейсхолдер:
                                                                  [[!+modx.user.id:memberof=`Administrator`]]
                                                                  срабатывает верно: если пользователь не зарегин выводит 0, иначе 1
                                                                  Но при этом есть косяк с обработкой THEN. Что посоветуете? Может быть есть кто-то повыше квалификацией и сможет объяснить, профиксить. Спасибо!
                                                                    Гриборий
                                                                    Гриборий Старожил
                                                                    14 декабря 2016, 14:19
                                                                    Попробуй добавить :else=``
                                                                      Алексей Смирнов
                                                                      Алексей Смирнов Проверенный
                                                                      16 декабря 2016, 10:09
                                                                      Естессно проверял — поведение не изменилось.
                                                                        Владимир
                                                                        Владимир Старожил
                                                                        16 декабря 2016, 10:39
                                                                        феном вместо модификаторов, это и лучше и функциональнее
                                                                        {if $_modx->user.id == 1} *** {/if}
                                                                        (вместо == 1 нужное вам условие), а модификаторы в MODX надо забыть
                                                                        PS и в доках пора столбец с феномом в модификаторах завести
                                                                          Василий Наумкин
                                                                          Василий Наумкин Администратор
                                                                          16 декабря 2016, 10:50
                                                                          Эта страница — перевод официальных доков.

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

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