Содержание
Explay CMS 3.0 alpha / Хабр
Сегодня у меня лопнуло терпение и захотелось показать миру Explay CMS 3.0. Прошло уже 8 месяцев с того момента, как я начал делать 3-ю версию. В январе было готово ядро, только вот тогда еще рано было говорить о том, что на нем можно сделать. CMS свою социальность, естественно, не потеряла, и даже приобрела несколько новых и интересных функций. Сейчас же я расскажу вам о том, что достигнуто. Посмотрите и попробуете, надеюсь, сами:)
Возможности
- Блоги
- Добавление публикаций двух типов: статья и ссылка
- Возможность «подключаться» к блогам, назначать администраторов и модераторов
- Оценивание и комментирование
- Ограничения по рейтингу пользователя
- Черновики
- Люди/пользователи
- Регистрация с подтверждением по e-mail и без
- Поиск по пользователям
- Небольшая статистика
- Возможность загрузки нескольких аватаров
- Настройки и смена пароля
- Возможность добавлять друзей
- Лента друзей аналогично новостям В Контакте
- Уведомления на e-mail/Внутренняя почта
- Уведомления об ответах на публикации, фотографии, почту и комментарии (в текущей версии сами e-mail’ы не отправляются, а складываются в БД)
- Обмен внутренними сообщениями аналогично Хабрабру
- Фотогалерея
- Возможность создавать фотоальбомы
- Загрузка фотографий
- Комментирование
- Планируются отметки пользователей на фотографиях
- Статичные страницы
- Присутствуют
Особенности движка
Первая и самая главная особенность 3-й версии — это архитектура. Описывать подробно я ее сейчас не буду, если кому интересно, то я говорил про нее в этом топике. Расскажу лишь о «вкусностях». Первая — это возможность комбинировать списки выводимых объектов (помните на старом Хабре страницы с топиками и комментариями?) Эта особенность, на мой взгляд, очень полезный и мощный инструмент, который уже используется в модулях блогов и в абсолютно новом модуле «Лента». Вторая особенность — это простота разработки модулей. При разработке модулей используется сравнительно небольшое количество функций и классов, вам даже не понадобится знания SQL. В помощь разработчикам уже есть документация. Третья особенность, которую я хотел бы выделить, — это кеширование. В сборку уже включены два интерфейса к бэкендам: Memcache и eAccelerator.
Недостатки особенностей
К сожалению движок не из разряда легких, причем в обоих смыслах. Во-первых, из-за особенностей архитектуры он очень требователен к ресурсам, а без кеширования я бы на рабочий сайт его не ставил, как говорится «красота требует жертв». Во-вторых, если разработка модулей достаточно проста (тем не менее требует от разработчика определенного уровня), то XSLT-шаблоны это другое дело. Насколько я представляю, сейчас достаточно мало верстальщиков работают с XSLT, поэтому верстка дизайна может влететь в копеечку. Здесь хочу добавить, что у самого нет денег на сервер, где можно развернуть CMS с тестовой площадкой:)
Планы
В ближайших планах подкрутить, что не подкручено и добавить пару мелочей, включая инвайты. Новых публичных модулей, пожалуй, пока не планируется. Не за горами и бета-версия, а там уже и релиз. Начиная с бета-версии обещаю, что будет модуль обновлений, а после релиза обновления не будут затрагивать шаблоны. Если когда-нибудь сделаю официальный сайт на 3-й версии, то обязательно будет багтрекер и репозиторий модулей и дополнений.
До версии 3.1 не будет административного интерфейса, но будут доступны самые необходимые настройки.
Системные требования
- PHP 5
- MySQL 5
- XSLT
- mb_string
- mod_rewrite
Желательно: Memcache или eAccelerator.
Установка
Скачать альфа-версию или посмотреть исходники можно на Google Code.
Установка: загрузить файлы на сервер, выполнить дамп базы данных (dump.sql).
Авторизоваться можно под admin/admin.
Обо всех обновлениях и нововведениях я стараюсь писать на http://explay.su
Тестируйте на здоровье!
P.S.: конечно же хочу услышать комментарии критику. Буду очень рад, если Вы ткнете меня носом в код с ошибками.
Explay cms — Викиреальность
EEvolution.CMS — бесплатная система управления персональными блогами и коллективными блогоподобными сообществами.
Программный код распространяется под лицензией GNU GPL v.3. Система реализована с применением современных принципов построения веб-приложений и использует максимум возможностей PHP 5 (адаптирована также под v.5.3), MySQL, XML (на данном этапе, в дальнейшем Smarty) и AJAX. Основная идея системы EEvolution.CMS — легкость и скорость, удобство и простота в использовании и изучении, безопасность, гибкость и стабильность, простота разработки нового функционала, доработки и адаптации под индивидуальные требования, модульный и плагинный принцип. Кроме того следует выделить использование ООП в связке с ORM, объектная модель HMVC. Следуя такому принципу построения и такой модели большую часть программного кода, отвечающего за выборку и внесение изменений в БД, было объединено в «ядро», что позволяет упростить написание новых модулей и плагинов и занимает крайне мало времени.
Структура системы включает в себя собственно ядро, модули, плагины и шаблоны. На данном этапе требуется хостинг с поддержкой XSLT, после перехода к Smarty будет гарантировано работать на большинстве отечественных и зарубежных хостингов.
Базовая комплектация системы включает гибкое структурированное ядро, предоставляющее API для разработчиков, антиспам плагин (в дальнейшем плагин Invites для регистрации по приглашениям, а по мере появления новых многие также будут включаться в комплектацию), модули: банеров, блогов, панели управления, комментариев статей и фотографий, cron, файловый менеджер, личных сообщений, ленты активности, статичный страниц и статей, управления участниками, профилей участников, фотоальбомов, микросообщений, работы со ссылками, система рейтингов участников, блогов, сообществ, статей, фотографий, комментариев и модуль работы с сервисом SAPE. API позволяет управлять полями и типами данных непосредственно из панели администратора, в том числе создавать и добавлять новые, удалять имеющиеся, связывать между собой.
Внешнее представление установленной копии гибко настраивается и позволяет выводить на определенные страницы определенные блоки, в том числе блоки банеров (место размещения выбирается в панели администратора), последних комментариев, рейтинга блогов и сообществ, облака тегов, статистики участников, облаков городов и стран участников, поиска участников. настройки оформления вынесены в шаблон. Имеется четыре вида публикаций: статья или заметка в персональный блог или сообщество, ссылки, новые сообщества и статичные страницы статей (из панели администратора).
Установив систему в базовой комплектации пользователь получает возможность публиковать статьи, заметки и ссылки в персональных блог, создавать тематические сообщества и публиковать в них статьи, заметки и ссылки, комментировать статьи других участников и собственные, комментировать фотографии в фотоальбомах, участвовать в рейтинге пользователей, статей, комментариев и фотографий, заводить друзей и наблюдать ленту их активности, общаться с друзьями с помощью личных сообщений. Настраивать свой и просматривать у других участников профили. В профиле предусмотрены поля имени, даты рождения, пола, электронного адреса, страны и города жительства пользователей, заметок о себе, интересы, контакты (ICQ, Skype, Livejournal, Twitter, Хабрахабр, ВКонтакте). Система регистрации новых участников возможна с активацией по e-mail или без таковой, в дальнейшем планируется ввести систему регистрации по приглашениям. Настройки профиля позволяют закачать и выбирать собственные аватары в количестве, разрешенном администратором, управлять оповещениями, менять пароль, подавать заявку на удаление собственного профиля (в будущем генерировать код приглашения с привязкой этой возможности к рейтингу).
В системе приняты четыре группы глобальных пользователей: гости, зарегистрированные участники, модераторы и администраторы. Глобальные администраторы имеют доступ ко всему. Кроме того в сообществах есть возможность также назначать модераторов и администраторов отдельных сообществ. По-умолчанию администратором нового сообщества становится создавший его участник (глобальный администратор имеет возможность переназначать администраторов и модераторов).
Система рейтингов позволяет управлять показом статей на главной странице, возможностями создания сообществ и др. Каждый участник может проголосовать только однажды за каждую запись или фотографию (нет возможности повторных голосований). Рейтинги персональных блогов привязаны к рейтингу участника и равны.
|
Explay CMS 3.
1 / Хабр IT News
Всем доброго времени суток! С недавних пор мое увлечение созданием движка сайта стало занимать львиную долю свободного времени. А так как летом я был полностью предоставлен сам себе, то сел за комп как за работу 🙂 При этом отсутствие хоть какого-то ощутимого дохода меня не останавливает; Надеясь, что кому-то помогу, хочу поделиться результатом своей работы.
Explay CMS — система для управления социальными сетями или блог-социальными сообществами. Он по-прежнему полностью бесплатен и распространяется под лицензией GNU GPL 3. Напомню основные характеристики:
- Коллективные блоги
- Фотоальбомы
- Дружеское общение и новости друзей
- Комментарии
- Рейтинги
- Официальная Внутренняя почта
- Подробнее о характеристиках системы
9002 можно узнать на сайте
9002.
Версия 3.1 является эволюционным продолжением версии 3. 0. В ходе разработки были исправлены все известные ошибки и доработаны основные функции. В новой версии CMS обзавелась полноценной админкой, что позволяет реализовать основную функцию, которую я анонсировал при выпуске 3.0 — управление полями публикаций, пользователями и вообще всем.
Далее о новшествах подробно и по порядку:
Модули
Одной из изюминок последней версии является интерфейс для работы с модулями. Теперь пользователь может скачать модуль с официального сайта и установить его из админки. Разработчик может «экспортировать» (создать установочный архив) разработанный им модуль и разместить его в офисе. сайт. Поскольку разработчик может создавать свои собственные типы данных и использовать их в своем собственном модуле, он может экспортировать сами типы данных. В будущих версиях появится возможность просматривать каталог модулей и устанавливать их прямо из админки, аналогично wordpress.
Что касается изменений самих модулей, то добавлена возможность переопределения методов, языковых констант и прав доступа, что позволяет не потерять сделанные при обновлении изменения.
Кстати, теперь на официальном сайте при размещении модуля можно (вернее нужно) описывать его API. В качестве примера я описал API, доступный из шаблонов для стандартных модулей.
Управление типами данных и их свойствами (полями)
Как было сказано выше — теперь вы можете самостоятельно настраивать (добавлять/изменять/удалять) свойства типов данных: публикации, фотографии, пользователи, блоги и вообще все. Предположим, если для ваших публикаций (статей, постов или тем — как хотите) вам нужно добавить возможность прикреплять изображение, то с помощью простейших манипуляций в форме редактирования публикации появится поле для загрузки изображения (в в этом случае вы можете настроить выходной формат и размер изображения). Вы также можете добавить обычные текстовые поля и даже поля тегов.
В одном из комментариев на Хабре прочитал про то, что сейчас только в двух отечественных CMS (Битрикс и UMI.CMS) можно создавать «справочники» (выпадающие списки), а теперь это доступно и в Explay 🙂
Такие манипуляции со свойствами (полями) типов данных возможны благодаря налаженной системе ORM. Здесь следует отметить, что для каждого типа данных в базе данных выделяется отдельная таблица, в которой хранятся объекты нужного типа. Когда, например, в публикацию добавляется новое текстовое поле, в таблице создается новый столбец. Возможно, это не самый идеальный подход, но он позволяет оптимизировать таблицу и тем самым повысить скорость работы всей системы, а также уменьшить головную боль при переносе сайта из другой или в другую систему.
Панель администратора
Админка оказалась довольно простой, без излишеств. Администраторам теперь доступны такие маленькие радости, как файловый менеджер, модерация публикаций, удаление пользователей, создание резервной копии сайта, управление статическими страницами, перетаскивание ссылок-значков в избранное и прочее.
Инновации на стороне пользователя
Нововведений здесь не много, вот основные:
- Создан «прямой эфир»
- Добавлена возможность восстановления пароля
- Добавлена возможность пользователям удалять свой профиль (точнее оставлять администраторам заявки на удаление)
Еще одно нововведение, которое не вписывается ни в один абзац, — новый модуль «Баннеры». Разработчику сайта предоставляется возможность выделять в шаблонах места, где размещаются так называемые баннеры (по сути, баннер — это кусок HTML-кода). Баннеры позволяют легко управлять блоками на странице со статическим контентом, не прибегая к редактированию шаблонов.
Где взять?
Все сборки и обновления, как обычно, выкладываются на Google Code в разделе загрузок. Рядом находится СВН.
Системные требования: PHP 5.2, MySQL 5, XSLT, Многобайтовая строка, Zlib, GD 2.
PHP 5.3 пока не поддерживается.Техническая поддержка
Для новичков в офисе. На сайте есть раздел FAQ, где можно получить ответы на популярные вопросы и советы по устранению возможных ошибок. Для тех, кто планирует разрабатывать модули, есть документация, описывающая принципы модульной системы, а также основные классы ядра.
Буду рад помочь безвозмездно оказать простую техническую поддержку и ответить на все ваши вопросы.
Спасибо за внимание!
CVE-2008-6411 — Explay CMS 2.1 и более ранние версии позволяют удаленным злоумышленникам обходить аутентификацию и получать административные права
Атака человека посередине
Этот тип атаки нацелен на связь между двумя компонентами (обычно клиентом и сервером). Злоумышленник размещает себя в канале связи между двумя компонентами. Всякий раз, когда один компонент пытается связаться с другим (поток данных, проблемы аутентификации и т. д.), данные сначала попадают к злоумышленнику, который имеет возможность наблюдать или изменять их, а затем они передаются другому компоненту, как если бы ни разу не наблюдалось. Это вмешательство прозрачно, поэтому два скомпрометированных компонента не знают о возможном повреждении или утечке их сообщений. Возможность атак типа «человек посередине» приводит к скрытому отсутствию доверия при общении или идентификации между двумя компонентами. Атаки MITM отличаются от атак перехвата, поскольку они часто изменяют сообщения до того, как они будут доставлены предполагаемому получателю. Эти атаки также отличаются от атак с перехватом, поскольку они могут пересылать исходные неизмененные данные отправителя после их копирования, а не сохранять их для себя.
Использование доверия REST к системному ресурсу для получения конфиденциальных данных
Эта атака использует доверие приложений в стиле REST (REpresentational State Transfer) к системным ресурсам и среде для получения конфиденциальных данных после завершения SSL. Предпосылка остальных приложений заключается в том, что они используют существующую инфраструктуру для предоставления функциональных возможностей веб-сервисов. Примером этого является приложение Rest, которое использует методы HTTP Get и получает ответ HTTP с XML-документом. Эти веб-службы в стиле Rest развертываются в существующей инфраструктуре, такой как веб-серверы Apache и IIS, без необходимости стека SOAP. К сожалению, с точки зрения безопасности, часто не развернут совместимый механизм безопасности идентификации, поэтому разработчики Rest часто прибегают к SSL для обеспечения безопасности. В крупных центрах обработки данных SSL обычно завершается на границе сети — на брандмауэре, балансировщике нагрузки или маршрутизаторе. Как только SSL завершается, HTTP-запрос становится открытым (если только разработчики не хешировали или не зашифровали значения, но это случается редко). Злоумышленник может использовать сниффер, такой как Wireshark, для моментального снимка учетных данных, таких как имя пользователя и пароль, которые передаются в открытом виде после завершения SSL. Как только злоумышленник соберет эти учетные данные, он может отправлять запросы поставщику веб-служб так же, как это делает авторизованный пользователь. Обычно на стороне клиента нет аутентификации, кроме того, что передается в самом запросе, поэтому, как только это скомпрометировано, этого обычно достаточно, чтобы скомпрометировать схему аутентификации службы.
Перехват сеанса
В атаке этого типа участвует злоумышленник, который использует уязвимости в использовании сеансов приложением при выполнении аутентификации. Злоумышленник может украсть или манипулировать активным сеансом и использовать его для получения несанкционированного доступа к приложению.
Подделка источника данных
Злоумышленник использует неправильную аутентификацию для предоставления данных или услуг под фальшивым идентификатором. Целью использования фальсифицированной личности может быть предотвращение отслеживания предоставленных данных или присвоение прав, предоставленных другому лицу. Одной из самых простых форм этой атаки будет создание сообщения электронной почты с измененным полем «От кого», чтобы создать впечатление, что сообщение было отправлено кем-то другим, а не фактическим отправителем. Корень атаки (в данном случае система электронной почты) не может должным образом аутентифицировать источник, и это приводит к тому, что читатель неправильно выполняет указанное действие. Результаты атаки различаются в зависимости от деталей атаки, но общие результаты включают повышение привилегий, запутывание других атак и повреждение/манипулирование данными.
Злоупотребление аутентификацией
Злоумышленник получает несанкционированный доступ к приложению, службе или устройству, зная о присущих механизму проверки подлинности недостатках или используя уязвимость в реализации схемы проверки подлинности. При такой атаке работает механизм аутентификации, но тщательно контролируемая последовательность событий приводит к тому, что механизм предоставляет доступ злоумышленнику. Эта атака может использовать предположения, сделанные процедурами аутентификации цели, такие как предположения относительно доверительных отношений или предположения относительно генерации секретных значений. Эта атака отличается от атак обхода аутентификации тем, что злоупотребление аутентификацией позволяет злоумышленнику быть сертифицированным как действительный пользователь с помощью незаконных средств, в то время как обход аутентификации позволяет пользователю получить доступ к защищенному материалу, даже не будучи сертифицированным как аутентифицированный пользователь. Эта атака не опирается на предыдущие сеансы, установленные в результате успешной аутентификации пользователей, как это делается в шаблонах атаки «Использование переменных сеанса, идентификаторов ресурсов и других доверенных учетных данных».
Подмена личности
Подмена идентичности относится к действию, заключающемуся в присвоении (т. е. принятии) идентичности какого-либо другого объекта (человека или не человека) и последующем использовании этой идентичности для достижения цели. Злоумышленник может создавать сообщения, которые кажутся исходящими из другого принципа, или использовать украденные/поддельные учетные данные для аутентификации. В качестве альтернативы злоумышленник может перехватить сообщение от законного отправителя и попытаться сделать так, чтобы сообщение исходило от него, не изменяя его содержания. Последняя форма этой атаки может использоваться для кражи учетных данных у законных пользователей. Атаки Identity Spoofing не должны ограничиваться передаваемыми сообщениями — любой ресурс, связанный с идентификацией (например, файл с подписью), может быть целью атаки, когда злоумышленник пытается изменить очевидную идентификацию. Эта атака отличается от атак Content Spoofing, когда злоумышленник не хочет изменять очевидную идентичность сообщения, а вместо этого хочет изменить то, что говорится в сообщении. При атаке с подменой идентичности злоумышленник пытается изменить идентичность содержимого.
Олицетворение токена
Злоумышленник использует уязвимость в аутентификации для создания токена доступа (или его эквивалента), который олицетворяет другой объект, а затем связывает процесс/поток с этим олицетворенным токеном. Это действие заставляет нижестоящего пользователя принять решение или выполнить действие, основанное на предполагаемой идентичности, а не на ответе, блокирующем злоумышленника.
Обход аутентификации
Злоумышленник получает доступ к приложению, службе или устройству с привилегиями авторизованного или привилегированного пользователя, обходя или обходя механизм аутентификации. Таким образом, злоумышленник может получить доступ к защищенным данным без аутентификации. Это относится к тому, что злоумышленник получает доступ, эквивалентный аутентифицированному пользователю, даже не проходя процедуру аутентификации. Обычно это результат того, что злоумышленник использует неожиданную процедуру доступа, которая не проходит через надлежащие контрольные точки, где должна выполняться аутентификация. Например, веб-сайт может предположить, что все пользователи будут щелкать данную ссылку, чтобы получить защищенный материал, и просто аутентифицировать каждого, кто щелкнет ссылку. Однако злоумышленник может получить доступ к защищенному веб-содержимому, явно введя путь к содержимому, а не щелкнув ссылку для аутентификации, тем самым полностью избежав проверки. Этот шаблон атаки отличается от других атак аутентификации тем, что атаки этого шаблона полностью избегают аутентификации, а не подделывают аутентификацию, используя недостатки или крадя учетные данные у законных пользователей.
Использование доверия к клиенту
Атака этого типа использует уязвимости в аутентификации канала связи клиент/сервер и целостности данных. Он использует неявное доверие, которое сервер оказывает клиенту, или, что более важно, то, что сервер считает клиентом. Злоумышленник выполняет этот тип атаки, связываясь напрямую с сервером, когда сервер считает, что он взаимодействует только с действительным клиентом. Существует множество вариаций этого типа атаки.