CMS oddelený od prezentácie
Veľmi ťažko vysvetlím uspokojenie potreby hrubým opisom niečoho, čo takmer neexistuje.
Predstavte si, že CHCETE mať správu obsahu svojej prezentácie *FYZICKY* oddelenú od samotnej webovej prezentácie. Nazvime to trebárs *MODUL CMS, MODUL DATA, MODUL WEB.*
V *module CMS* je redakčný systém, ktorý mení, upravuje, pripravuje obsah do *MODULU DATA.*
No a nakoniec *MODUL WEB* siahne do *MODULU DATA* a vyšperkuje to do podoby webovej prezentácie.
Sťažme si to ešte tak, že MODUL CMS je na jednom fyzickom stroji, MODUL WEB na inom stroji. Oba nemajú so sebou *žiadny „normálny“ fyzický kontakt.* Takže nemôžu zdieľať MODUL DATA.
Napadne Vás – veď si nakopnem CMS na oba stroje a „nejako“ budem prenášať dáta medzi nimi. Ale, čo ak toto nechcem? Ja nechcem mať na stroji s webom „kompletný“ a „nebezpečný“ CMS.
Väčšina teraz známych CMS systémov *NEDOKÁŽE fungovať v takomto modeli.*
U Movable Type som si overil jeho schopnosť aspoň virtuálneho modelu „oddelených“ modulov, pričom je nutnosť ASPOŇ toho istého fyzického stroja a samotné CMS môže byť odhradené firewallom. Je to ale preto, že Movable Type v štandarde produkuje „dokumenty“ nezávisle na samotnom CMS stroji. Keby som MT zmazal, ostane mi celý Spravodaj taký aký vidíte.
Pri testovaní Joomla ma napadla znovu tá istá skepsa z CMSiek ako pred rokmi. Nikto z architektov dnešných CMSiek akosi neuvažuje nad *nutnosťou naozaj fyzicky oddeliť redakčný systém od prezentačnej vrstvy.* A pritom to nie je až také ťažké.
Postačilo by napr. pripraviť *engine, ktorý zoberie šablóny vzhľadu, siahne do dát a poskladá to do webovej stránky* podľa nejakej navrhnutej štruktúry sajtu. Uznávam, že na Joomla je to prakticky nemožné.
Otázka synchronizácie databáz? Podľa mňa minimum problémov. Dokonca by som zvažoval, či je na oboch „strojoch“ nutný TEN istý typ databázy. Podľa mňa ani to nie :-)
Takže situácia, žeby na „CMS stroji“ bežal výkonný SQL s kvalitným CMS a na „webovom stroji“ by šiel dajme tomu iba Apache.
Dôvod? Najčastejší dôvod kompromitácie stroja je práve *prienik „zbytočným“ kódom CMS* vystaveným „vonku“. Naviac, omnoho jednoduchšie sa napráva kompromitovaný „webový“ modul – proste ho preplácnete, zreplikujete z CMS a frčíme ďalej.
Možná kompromitácia CMS modulu zasa neovplyvní webový modul (číže to, čo vidno). Za podmienky, že replikáciu riešime na inej úrovni ako „veľkým buttonom v CMS“ :-)
Je tu vôbec niekto, kto vyrástol trošku ďalej od uspokojenia s primitívnymi CMS typu PHPRS? Ono aj tá Joomla je len modernejší (a objektívne kvalitnejší) PHPRS :-)
Pre doplnenie trochu inak o CMS:
* Fiktívny CMS by mal vedieť viac
* Aké a ako CMS vyberať
* Ako je CMS klientom docenené
Súhlasím, preto moje CMS má (do veľkej miery) oddelenú prezentáciu od logiky. Ale to má ešte ďaleko od dokonalosti a zverejnenia ;)
Ale iné som chcel: prečo myslíš, že oddelením web modulu od CMS modulu bude CMS modul bezpečnejší? Háčkuje sa nepekne podstrčenými požiadavkami (get, post, …) a tie predsa (ak chce systém správne fungovať) jednoducho web modul musí „preposlať“ do CMS (aby boli v data module chcené dáta).
Alebo som ťa nepochopil?
[1] mas problem, pokial chces, aby bola prezentacia interaktivna a napr. navstevnik webu vkladal napr. komentare k prispevkom. Vtedy naozaj potrebujes tok dat aj smerom z web modulu do data modulu.
Casto vsak nie (firemne prezentacie).
WEB modul teda vacsinou iba nacitava z data modulu – „sklada“ stranky.
CMS modul zasa robi vsetky katastroficke operacie. Ked mas CMS modul na inom fyzickom stroji, mozes ho CELY odtienit od internetu. Pre firmy je to vlastne prijatelny sposob, pretoze preco by mal byt CMS dostupny z internetu, ked sa gro roboty robi vnutri?
No a ked si vytvoris bezpecnu cestu (jednosmernu) pre replikaciu data modulu, tak mozes webovej prezentacii pravidelne „posielat“ aktualizovane data. Radikalne sa ti zmeni pohlad na „bezpecnost“ webovej prezentacie, bude pre teba „iba“ kopia.
Opakujem, ze pokial potrebujes, aby do dat isli vstupy od navstevnikov, je situacia komplikovanejsia ;-) ale riesit sa podla mna da.
Mne ide o to, aby na webe „neviseli“ zbytocne kusy kodu kompletneho CMS.
Trochu sa to podoba na offline CMS systemy.
K rovnakemu vysledku som prisiel aj ja. A to aj po skusenostiach s „velkymy“ (enterprise) CMS systemami. A preto ziadne CMS nepozivam. Po par pokusoch a vela sklamaniach som skoncil pri primitivnom blosxom-e, ktory som si dohackoval na vlastny obraz. A namiesto CMS mam joe a hrcu vlastnych perl scriptov. A som happy.
V pripade synchronizacie roznych DB potom len potrebujes export/import do rvonakeho formatu, to je jednoduche.
V pripade sycnhronizacie rovnakej DB, potrebujes len SQL export/import, este jednoduchsie.
Oddelenie zobrazovania od obsahu ide dosiahnut nejakymi zlozitejsimi templatovacimi jazykmi typu PHP ;-)
[2] Aha, pokiaľ ti ide o neinteraktívne prezentácie, tak plne súhlasím.
AD synchronizacia databaz – naco? ved databazovy stroj moze byt uplne nezavisly (napriklad aj na zvlast stroji) a CMS a WEB moduly by donho mali pristup s adekvatnymi privilegiami (CMS-rw a WEB-r). Takto by mohla byt kazda cast uplne nezavisla (teda az na to, ze ak padne DB modul, tak nemozu pracovat ani CMS a WEB moduly. To by sa ale dalo ciastocne riesit pomocou cache na strane WEB modulu).
AD zranitelnost – ak by nebola na strane WEB modulu pouzita cache, ale priame cucanie dat z DB modulu, tak opat hrozi SQL injection. Je to vsak len otazka osetrenia.
A este nieco – ak som Ta spravne pochopil, tak Tvoje predstavy asi naozaj najlepsie naplna niektory z offline CMS typu EasyBlog. Je inak zaujimave, ze ziaden z velkych projektov nesiel touto cestou (t.j. cestou uplnej separacie vrstiev, nie cestou offline aplikacie).
ano ziadny velky cms nesiel cestou separacie. tym myslim aj databazy. casto nie je nutna ani sql na webe. a nemusi to byt nevyhnutne neinteraktivna webka
OpenCMS (www.opencms.org) dokáže robiť static export, takže si viem predstaviť, že na jednej mašine pobeží OpenCMS aj s databázou, a cez NFS/SAMBU/inýt_protokol bude mať namountované disky z web mašiny, kde pobeží povedzme len Apache (alebo niečo ešte jednoduchšie/osekanejšie/zabezpečenejšie). Pokiaľ nepotrebuješ dynamické funkcie (ale aj to by IMHO išlo realizovať, len som to ešte neskúšal), tak by to mohlo spĺňať Tvoje požiadavky.
[8] moje poziadavky v -tomto- smere splna moj vlastny CMS. Podotykam v -tomto- :-)