Комментарии 38
Два вопроса:
1) Сообщили ли разработчикам?
2) Все-таки не так уж просто стороннему человеку добыть site_id. Нужно как-минимум иметь доступ к административной части или файловой системе.
Другими словами получается, чтобы получить доступ к админке и файловой системе — надо знать site_id, а чтобы знать site_id — надо иметь доступ к файлам или админке.
1) Сообщили ли разработчикам?
2) Все-таки не так уж просто стороннему человеку добыть site_id. Нужно как-минимум иметь доступ к административной части или файловой системе.
Другими словами получается, чтобы получить доступ к админке и файловой системе — надо знать site_id, а чтобы знать site_id — надо иметь доступ к файлам или админке.
+2
1. Да, сообщил. Хотя более чем уверен, что будут фиксить довольно продолжительное время, так как слишком много завязано на этом. Издержки многосайтовости…
2. На самом деле не все так сложно. Есть много моментов:
во-первых, переменная $site_id — GLOBAL, а значит хоть какой дохлый код затесается в окружение $modx, все, можно ее перехватить.
во-вторых, проблема еще и в следующем: в MODx Revolution очень гибко настраиваются политики безопасности (группы пользователей, роли и т.п.)… А какой смысл, если тебе дали доступ одну страничку подправить, с доступом к только одной страничке, и больше ничего, а ты влегкую перехватываешь эту переменную в POST-данных? Всё. Есть ключик ко всему…
Да и еще много моментов…
2. На самом деле не все так сложно. Есть много моментов:
во-первых, переменная $site_id — GLOBAL, а значит хоть какой дохлый код затесается в окружение $modx, все, можно ее перехватить.
во-вторых, проблема еще и в следующем: в MODx Revolution очень гибко настраиваются политики безопасности (группы пользователей, роли и т.п.)… А какой смысл, если тебе дали доступ одну страничку подправить, с доступом к только одной страничке, и больше ничего, а ты влегкую перехватываешь эту переменную в POST-данных? Всё. Есть ключик ко всему…
Да и еще много моментов…
+1
киньте плз ссылку на баг
0
Ну если тебе дали доступ, то ты его как-то заслужил.
В общем это все-равно что в версии 1.0 Evolution были SQL инъекции в админке, но это не самый критичный момент.
Да, киньте ссылочку на баг, где разместили. За него же можно голосовать в трекере, чтобы обратили внимание.
В общем это все-равно что в версии 1.0 Evolution были SQL инъекции в админке, но это не самый критичный момент.
Да, киньте ссылочку на баг, где разместили. За него же можно голосовать в трекере, чтобы обратили внимание.
0
+1
У меня не вышло получить доступ по ссылке. Может, вам тоже стоит обновиться на 2.1.1?
Ссылка
Ну и, в любом случае, закрывать админку силами веб-сервера для левых IP совершенно не вредно.
— Make modauth calculation independent of session_id
— Ensure login/logout processors do not add Contexts with empty keys
Ссылка
Ну и, в любом случае, закрывать админку силами веб-сервера для левых IP совершенно не вредно.
0
Да, выше я уже сказал, что в версии 2.1.1 пофиксили. Но проблема в том, что 2.1 пока очень сырая. Полно багов в админке. Особенно убивает когда включаешь ЧПУ (тогда поле alias становится обязательным), забываешь заполнить это поле, жмешь Сохранить, получаешь соответствующее сообщение, заполняешь псевдоним, жмешь Сохранить опять и получаешь сообщение о невозможности создать копию документа (хотя, во-первых, не копия создается, а новый документ, а во-вторых, запрос на сервер даже не отправляется), то есть тупо нельзя сохранить новый документ. Да и прочих моментов хватает.
А закрывать по ip… Далеко не всегда резон.
А закрывать по ip… Далеко не всегда резон.
0
Вот мне всегда интересно, зачем использовать эти жалкие цмски, когда есть полно более серьезных и гибких фреймворков? Уверен, при наличии небольшого количества собственных наработок сделать сайт на той же симфони можно примерно за столько же времени (плюс-минус), как и на модэксе, однако же структура приложения будет полностью под контролем и любой шаг в сторону будет прост, понятен и занимать не так много времени. Тут же стандартный функционал реализуется быстро и из коробки (чем и подкупает кучу новичков) а сделать что-то немного более нестандартное — гораздо сложнее. Надо перелопатить ядро цмски, плагины и черт знает что еще. Правда не понимаю для чего писать сложные сайты на цмсках.
-3
Поправляю: MODx — это не жалкая ЦМСка, фреймворк. Так, на минуточку…
Просто ничто не совершенно под луной. Я этот баг нашел только потому что уж очень хорошо знаю MODx (более двух лет с ним работаю). А в целом это далеко не самая дырявая платформа.
Просто ничто не совершенно под луной. Я этот баг нашел только потому что уж очень хорошо знаю MODx (более двух лет с ним работаю). А в целом это далеко не самая дырявая платформа.
+4
Да нет, не нужно сравнивать слегка подросшую цмску, которая почему-то себя обозвала фреймворком и настоящие, полноценные фреймворки с mvc, например
-5
С каким MVC? При чем тут это? Вы о чем говорите?!!! MVC — это модель (Model-View-Controller). Я на двух файлах ее реализую (отдельно логика, отдельно шаблон). Вы еще Кохану вспомните и HMVC и тогда вообще скажите что все остальное — детский сад.
MODx — это полноценный фреймворк с CMS-кой, которую можно легко удалить, а пространство на жестком диске после нее забить нулями на 3 раза, а потом легко написать свою CMS-ку к нему.
Если не разбираетесь в вопросе, то не обязательно лезть. Этот топик, если вы не поняли еще, для разработчиков MODx, и находится в соответствующем разделе.
MODx — это полноценный фреймворк с CMS-кой, которую можно легко удалить, а пространство на жестком диске после нее забить нулями на 3 раза, а потом легко написать свою CMS-ку к нему.
Если не разбираетесь в вопросе, то не обязательно лезть. Этот топик, если вы не поняли еще, для разработчиков MODx, и находится в соответствующем разделе.
+3
Мне виднее куда мне лезть и извините, если задел ваши профессиональные чувства. Модэкс — смешная поделка, по сравнению с любыми современнами фреймворками и именно это вы подтверждаете своим топиком. А mvc — это уже не два файла (класс модели, класс формы/валидаторов, класс контроллера и тимплейт). Жаль, что большинство не понимают разницы в используемых средствах разработки и настолько узколобы, что не могут адекватно сравнить два подхода в разработке — каркас приложения и полностью свой код контролируемый код и чьи-то там готовые разработки для быстрого клепания сайтов в студии из трех студентов. Откровенно не знаю ни одного нормального разработчика, разменивающегося на битрисы/модексы/джумлы.
-4
Может просто вы не попали в общество нормальных программистов?
Давайте не будем тут разводить извечные баталии ни о чем. Топик не этого касается. Создайте топик CMS vs MVC, мы придем туда и поспорим.
Давайте не будем тут разводить извечные баталии ни о чем. Топик не этого касается. Создайте топик CMS vs MVC, мы придем туда и поспорим.
+4
К счастью, попал. А разводить воду о том, что и так понятно опытным людям и напрочь непонятно неопытным — не стоит. Кстати, мне было бы тоже неприятно, если бы меня ткнули носом в профессиональную стагнацию или если бы я считал mvc «двумя файлами, в одном — шаблон, в другом — логика»
-3
Создайте топик CMS vs MVC
Это ведь была шутка, верно?
0
Николай, похоже вы, за пару лет работы с этой замечательной CMS совсем позабыли что такое MVC. Сама аббревиатура, состоящая из трёх букв, как бы намекает, что парадигма MVC подразумевает под собой немного большее, чем разделение логики и представления.
0
Ну вы же взрослые люди, может просто достать и померяться?
0
Вы можете хоть в 10 файлов рассовать, не в этом смысл.
Главное — это отделить логику от визуализации.
Нет, вы правы, конечно, на счет трех составляющих: это Вьюха, Модель и Контроллер, который выступает посредником между Вьюхой и Модулем. Но не важно в трех файлах это размещается, или в тысячи.
Главное — это отделить логику от визуализации.
Нет, вы правы, конечно, на счет трех составляющих: это Вьюха, Модель и Контроллер, который выступает посредником между Вьюхой и Модулем. Но не важно в трех файлах это размещается, или в тысячи.
+2
В новой версии коннекторов под modx (август 2011) установлен свитч на контексты. Контекст по умолчанию mgr. Других пока нет. Так что беспокоиться нет смысла о защите в этой теме и об расширяемости коннекторов.
0
Да, защитили. Только больше необходимого.
Теперь старые публичные коннекторы не работают. Требуются дополнительные телодвижения
$siteId = $_SESSION["modx.{$this->modx->context->get('key')}.user.token"];
/* ensure headers are sent for proper authentication */
if (!isset($_SERVER['HTTP_MODAUTH']) && !isset($_REQUEST['HTTP_MODAUTH'])) {
$this->body = $modx->error->failure($modx->lexicon('access_denied'));
} else if ( isset($_SERVER['HTTP_MODAUTH']) && $_SERVER['HTTP_MODAUTH'] != $siteId ) {
$this->body = $modx->error->failure($modx->lexicon('access_denied'));
} else if (isset($_REQUEST['HTTP_MODAUTH']) && $_REQUEST['HTTP_MODAUTH'] != $siteId) {
$this->body = $modx->error->failure($modx->lexicon('access_denied'));
Теперь старые публичные коннекторы не работают. Требуются дополнительные телодвижения
+1
Все таки как то можно сделать публичный коннектор, ведь ключ нельзя во фронтенде использовать?
sry
sry
0
Конечно можно, это же MODx)))
Я не стал изобретать велосипед. Раньше в публичных коннекторах объявлялась MODX_REQP, false
Вот и сейчас я просто немного дописал в этом коде
То есть если объявлена MODX_REQP, false, то пропускать.
Этот код в файле core/model/modconnectorresponse.class.php
Я не стал изобретать велосипед. Раньше в публичных коннекторах объявлялась MODX_REQP, false
Вот и сейчас я просто немного дописал в этом коде
else if ( isset($_SERVER['HTTP_MODAUTH']) && $_SERVER['HTTP_MODAUTH'] != $siteId && (!defined('MODX_REQP') || MODX_REQP !== false)) {
$this->body = $modx->error->failure($modx->lexicon('access_denied'));
То есть если объявлена MODX_REQP, false, то пропускать.
Этот код в файле core/model/modconnectorresponse.class.php
0
Вот только сейчас подумал, если у нас есть коннектор и мы его хотим открыть. почему не сделать его заведомо с ключом.
/assets/.../connector.php
…
/assets/.../connector.php
...
if($_REQUEST['action'] == 'имя_разрешенного процессора')
$_REQUEST['HTTP_MODAUTH'] = $_SESSION["modx.{$modx->context->get('key')}.user.token"];
…
0
тут проблема возможно: скорее всего, если пользователь не авторизован, у него просто не будет этого токена. Проверь
0
Я проверил, и оказалось, что токен в контексте mgr есть, а в web нет.
0
вот-вот, потому и я и не стал изобретать велосипед
0
К тому же вообще не люблю лишний раз усложнять. Эти потом опять что-нить перепишут, и задача все усложняться и усложняться будет
0
Проблема в том, что исходники я не хочу менять.
Да… Я как раз и боюсь. что они чтото изменят. Неужто лучше брать xpdo и самому все делать)).
Да… Я как раз и боюсь. что они чтото изменят. Неужто лучше брать xpdo и самому все делать)).
0
А можешь подсказать, как сделать публичнй коннектор. У меня как раз в этм загвоздка, он меня не пускает к процессорам из assets. Решил подключить xpdo вручную и работать так с объектами.
Все таки как то можно сделать публичный коннектор, ведь ключ нельзя во фронтенде использовать?
Все таки как то можно сделать публичный коннектор, ведь ключ нельзя во фронтенде использовать?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Безопасность и проблемы с ней в MODx Revolution