Хранения ядра в одном месте

  • Автор темы ChesterOne
  • Дата начала

ChesterOne

Guest
Хранениe ядра в одном месте

Я планирую сделать CMS систему (да, знаю их как собак нерезанных, но все же). Так как она будет использоватся на многих сайтах, то я думал хранить неизменную часть, так называемое "ядро" в одном месте. Ведь глупо дублировать его для каждого клиента.
Так как CMS-ка будет предоставлятся вместе с хостингом, то и она и сайты будут на одном сервере, следовательно подгрузка ядра не должна тормозить.
Подумал, и решил просто открывать файл ядра для запуска всем. И в нем просто проверять права. Но возникла проблема, если php файл инклюдится из другого виртуального хоста, то для него ничего недоступно. Ни переменные, ни константы.
Подскажите, пожалуйста, как лучше хранить ядро?
Спасибо.

-~{}~ 04.11.04 16:26:

И даже более того. Я планировал, на сайте клиента хранить лишь логин с паролем к аккаунту, и сразу же грузить ядро.
Ядро в свою очередь получив данные лезет в БД, грузит все шаблоны, модули, параметры для данного аккаунта. На выходе получаем готовую страницу. Как думаете, реально такое? Или ,бред?
 

SiMM

Новичок
Т.е. будучи твоим клиентом я смогу написать модуль, благодаря которому упадут все остальные твои клиенты?
 

ChesterOne

Guest
В общем этот файл запуска будет в скомпилированном виде. И закрыт для записи от фтп аккаунта клиента
 

Cougar

Кошак
ChesterOne
1. Если файл инклюдится откуда угодно, то он становится составной частью "инклюдящего" файла. И, соответственно, для него доступны все определённые в "инклюдящем" файле переменные, константы и т.п.
2. Что значит "открывать файл ядра для запуска"?

...и даже более того :) Многое из того, что де-факто является бредом - вполне реально. Здесь же я вижу попытку реализовать нечто вроде DCOM. Или я неправ?
 

ChesterOne

Guest
Э, я в этих ДКом не силен. Но для того чтобы инклюдить файл нужны права. А то ведь можно было бы, все что угодно за инклюдить и увидеть все переменные. Надо открывать файл для Exec.
Я на локалхосте пробовал инклудить файл из другого вирт. хоста, он невидит переменных и т.д. :(
 

SiMM

Новичок
Автор оригинала: ChesterOne Я на локалхосте пробовал инклудить файл из другого вирт. хоста, он невидит переменных и т.д. :(
Каким образом? include 'http://virtualserver/script.php';? И не должен, поскольку это HTTP-запрос. Если же include '/path_to_virtualserver/script.php', то не вижу причин, чтобы переменные не были видны. Однако, имхо, и тот, и другой способ позволяет клиенту тебя сломать - может ошибаюсь.
 

ChesterOne

Guest
А как же мне узнать настоящие пути до файлов?
Простите за глупый вопрос :)
И вообще, ведь скриптам нельзя выходить за рамки выделенной им директории :(
 

neko

tеam neko
все говорят, что мы вместе
все говорят, но немногие знают в каком
 

Gas

может по одной?
И вообще, ведь скриптам нельзя выходить за рамки выделенной им директории
Очень даже можно если не включён safe_mode и прочие директивы типа safe_mode_include_dir и не установлена open_basedir
 

ChesterOne

Guest
2 Gas
Ого! Так значит все клиенты на одном сервере могут друг друга инклюдить?
Наверное у всех стоит safe_mode_include_dir
 

Gas

может по одной?
По поводу проблемм безопасности Shared хостинга, может пригодитсяэто
 

ChesterOne

Guest
Спасибо. С путями все ясно. А вообще насчет хранения на сайте клиента только данных по аккаунту и инклюда ядра что думаете? Оправдано ли это?
Если я скомпилирую этот файл вызова и закрою для него фтп доступ, то это будет безопасно?
 

Cougar

Кошак
ChesterOne
"Если я скомпилирую этот файл вызова и закрою для него фтп доступ" - что бы это могло означать?
 

ChesterOne

Guest
:)
Скомпилирую Zend Optimizator - ом, и для фтп аккаунта клиента выставлю readonly атрибут.
 

Cougar

Кошак
ChesterOne
Не вижу связи между инклюдом и "read-only" на фтп. Или ты собираешься по фтп инклюдить? Тогда скорость падает - даже на в пределах локальной машины установление http/ftp соединения занимает некоторое время. И к тому же файловая система имеет обыкновение кешировать файлы, в отличие от.
В целом - это не проблема конкретно твоей CMS - это гораздо более общий и абстрактный вопрос защиты многократно используемого кода.
Если таки обработать encoder-ом (и при отсутствии дыр в коде, разумеется) - то вполне можно раздавать "в аренду" пользователям.
 

ChesterOne

Guest
Cougar
Компиляция нужна для того, чтобы пользователь не мог увидеть данных которые передаются ядру. А ReadOnly для того, чтобы он не мог заменить файл вызова своим файлом.

Инклюдится же будет обыкновенным образом, а не по фтп.

-~{}~ 05.11.04 06:04:

Этот файл вызова будет перехватывать все обращения к html страницам сайта ModRewrite-ом. И соответсвенно передавть ядру
PHP:
$REQUEST_URI;
Вот и все что он него требуется.
А что? По моему не плохо. Т.е. если ядро грейдится, то все клиенты будут сидеть на новом ядре.
Так же ядру доступны все необходимые классы. HTML шаблоны хранятся в БД для клиента.
 
Сверху