Принципы построения CMS

  • Автор темы Автор темы chaan
  • Дата начала Дата начала
Мы не собираемся скрывать то, что лучшие программисты нашли дыры которые были в одночасье исправлены. Хотя лично я думаю, что тему сотрут.
 
Светлана ПеХеПе...
Собственно моя CMS работает, но до выкладывания демок мне (нам) ещё очень далеко...

Кстати, зачем вы включили отладчик в демке?
ИМХО всю инфу нужно пихать в логи за пределами веб-сервера, а пользователю отдавать страничку что всё нормально прошло... И пускай хакер думает что и без него всё поломано =))))
 
Бетик. Я даже не знаю как до тебя до нести... Ну отдали на растерзание, что-ли.

Удачи Вам в продвижении твоей CMS
 
Помоему на эту ветку ещё очень долго будут натыкаться ваши потенциальные клиенты
ONK здесь форум разработчиков а не приобретателей ЦМС...
и какая может быть реклама?
вот, что потенциальные дыры выловили с пом. форума - это светочка хорошо придумала, за что ей мое уважение.
 
ONK
http://www.a2c-cms.ru/news/more.phtml?com5=4

Любая попытка взлома будет воспринята с приветствием :)

-~{}~ 20.04.05 18:50:

Ой... А "продвинутым новичком" я, прости господи, наверное автоматом стала... Нафлеймила...

-~{}~ 20.04.05 18:50:

Извините. ;)
 
хорошь отНЮКИваться ))
Ошибку показали скажи "ОГРОМНОЕ СПАСИБО" и исправь
 
t3[0one]
Да ладно тебе. Никто не "отнюкивается". Будь проще. А то тут был некий Чан: тоже накручивал себе да накручивал...
 
что накручивал ? Джеки что ли ? ( не кто не говарит про твой статус)
 
Повторюсь, открыт "демо" раздел. Добропожаловать.

И ещё раз... Это я автоматом продвинутм новичком стала... А то нигде тут в факах об этом не написано
 
Мысли на тему: какой функционал включать в ядро.
Чем в моем понимании отличается встраивание в ядро от запуска в виде модуля? А тем что, если модуль включен в ядро, то не происходит проверка его наличия в системе.
Пример 1 : модуль рекламы. Основная функция -- это показ баннеров. Дополнительная -- узконаправленная реклама. Соотв., показ осуществляется в любом случае, а узконаправленная реклама возможна лишь при наличии функционала. Короче, модуль рекламы НЕ СМОЖЕТ работать без получения данных, например, т.е. в базовый функционал(в ядро) должен входить модуль получения данных(пусть будет БД). Проверка на наличие модуля "БД" НЕ ПРОВОДИТСЯ. А узконаправленная реклама возможна лишь при наличии модуля сбора статистики, и, если модуль присутствует в системе, то используются его методы, если же модуль отсутствует, модуль рекламы продолжает свою работу, теряя в функционале.
Из примера можно резюмировать, что модули можно разделить(в данном конкретном примере, исключая модули управления и т.п.) на обеспечивающие базовый функционал и расширяющие функционал. Конечно, от проекта к проекту набор модулей разниться. Но все же хотелось бы определить базовый функционал для проектов среднего уровня, корпоративных.
Мое мнение, базовый функционал:
1. Класс Модули(Подключени, инсталяция и т.д.). Должен быть в любом проекте, возможно, где-то можно урезать функционал, например, удалить установку новых модулей, если система того не требует.
2. Класс Файлы(Создание, запись, чтение и т.д.). Т.к. в почти на всех сайтах есть админка, можно вывести, что изменение конфигов через интерфейс требует операций над файлами.
3. Класс ДБ. Опять же почти все современные сайты завязанны на БД, => без этого класса тоже трудно.
4. Класс Валидатор. Конечно, для ну очень простого проекта можно написать очень простые ограничения в самом скрипте, но в Классе все уже отработанно и протестированно.
5. Класс Обработчик(Убираем кавычки, обрабытываем пере БД). Функционал(почти весь) данного класса можно реализовать с помощью стандартных функций, но централизация страдает. Во множестве случаев, кстати, мне приходилось писать обработчик в самом модуле, т.к. обработка требовалась уникальная.
Дополнительные модули, расширяющие функционал: статистика, обработчик ошибок, реклама и т.д.
Управляющие(+отвечающие за вывод, например, комментарии): форум, голосование, авторизация пользователей(НЕ СТАТИСТИКА) и т.д.
Что думаете о таком разделении?
П.С. Сейчас пишу CMF систему. Там из описанных мною модулей в ядро встроен только Класс Модули. Т.е. ядро -- это лишь среда для работы всех модулей. Система делиться на несколько уровней. От проекта к проекту можно варьировать наличие модулей, т.е. функционал. У каждого модуля есть ТРЕБОВАНИЯ, они деляться на обязательные, без которых модуль работать не будет, и желательные, бех которых функционал модуля уменьшается.
 
chaan

Ну вот смотри...

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

Я полагаю, ты желаешь включить в свою CMF систему распределённого пользовательского доступа... Ведь так? И согласись, что не все пользователи будут иметь возможность совершать определённые действия?

Именно поэтому, идентификация пользователя (браузера если хочешь) является неотъемлимой задачей ядра системы. Конечно ядро может записать определённые данные в сессию один раз... Но не факт, что пользователь будет пользоваться исключительно ссылкой ведущей на вход в систему, те постоянно придётся проверять, а есть ли эти данные, записаны ли они.

Куда ты в своей "структуре" дел базовое: разделение представления и логики? Спрятал в класс Файлы?

Понятие "Обработчик" довольно не двусмысленное - его привыкли связывать с понятием СОБЫТИЕ, но никак с набором функций.

И не путай классы с областями видимости.

-~{}~ 25.04.05 23:54:

chaan

Ядро - это тоже модуль. Самый главный модуль. Если оно у тебя не будет являться модулем, то ты его не сможешь обновлять...
Даже если судить из твоей схемы - подключение, инсталяция и пр.
 
Пример:

Существует работающая система с хранением данных пользователя в БД. После перевода сайта на выделенный сервер, для повышения уровня защиты, принимается решение использовать Unix'овую систему хранения пароля (/etc/shadow).

Теперь для случая включения авторизации в ядро, возникает необходимость поддержки двух веток ядра. С хранением пароля в БД и с хранением пароля в /etc/shadow. Проблемы в поддержкой двух веток ядра мне расписывать?

В случае выделения авторизации в модуль - возникает всего лишь еще один модуль. Поддержка одного модуля уже отлажена на менне критичных для системы модулях, не так ли?
 
3BEP, не надо было отказываться от хранения паролей в БД, тем более если у вас выделенный сервер. Или вы не доверяете своим способностям избегать SQL injections?
 
наличие скрипта, работающего от рута, потенциально опаснее любых sql injections.
или имеется в виду структура файла, аналогичная /etc/shadow?
 
На счет "путания" классов с пространством имен. Я просто использую клаассы, как namespaces, т.к. для другой цели их применение мне пока не требовалось.

С разделением прав. Как я понимаю, это касасется только admin area. Конечно, если использовать что-то вроде "drag-and-drop", то встраивание распознавания пользователя возможно. Может я не вижу в чем плюс встраивания в ядро распознования, тогда опиши плюсы.

Классы/Модули там, ессно, описанны не все. Есть шаблонизатор и др. Просто это я не описывал, т.к. это вторично, по крайней мере для этой темы.

Вообще, хотелось бы услышать мнение тех, кто уже имеет большой опыт разработки/проектирования подобных систем.
 
ONK, fixxxer
Это просто пример для Светлана PHP. Я неудачно составил пост, признаю. А до выделенного сервера еще не дорос... ;)
 
Светлана, а ваша фамилия случайно не Поссе?
Маркетологи пишущие cms =))
А кто такой Роскошинский?
"Оперативно модули с дырами были обновлены и установлены на все копии A2C, которые имеются на сегодняшний день," - просто смешная фраза =)))
 
Сверху