Pisanie własnego, najprostszego CMS

0

Dzień dobry.

Napisałem dodatek do skryptu forum phpBB. Teraz chcę uruchomić analogiczną funkcjonalność we własnym CMS. Problem w tym, że nie wiem jakiej technologii użyć przy pisaniu takowego (czy gołe php + MySQL, czy jakiś framework etc.). Nie znam też standardów bezpieczeństwa i ergonomii i ekonomii skryptów. W phpBB posty są pisane tekstowo, a po wysłaniu ich, są zamienianie na XML i zapisywane w bazie. Podczas odczytu z powrotem są zamieniane na tekst z przetworzeniem BBCode'ów. Co należy wiedzieć przy tworzeniu takiego CMS? Bo napisać, żeby działało to chyba dam radę, ale co z bezpieczeństwem i szybkością działania? Jaka technologia?

Dzięki
M.

0

W każdy środowisku i każdym języku kusi, zamiast poznawać złożony projekt (np gotowy CMS), często znaczny czas wejścia - "napisze swój, będzie lepszy" 1)

No nie będzie. Na lepszy by była szansa, gdyby głęboko poznać ze 2-3 istotne na ryku itd, być dobrym analitykiem, dobrym programistą . I kółko się zamyka

Wydaje się, ze w PHP już są wszelkie możliwe CMS/ frameworki/ itd. W jednych jest więcej "ryby" (Wordpress), w innych "wędki" (Drupal), praktycznie zawsze da się coś wybrać

  1. jest psychologicznie prawdą, że poczatkujących akurat przeraża wejście w coś gotowego, nauczenie się itd...
5

Zbudowanie od zera CMSa to kupa roboty i za pewne długo nie wyjdzie Ci nic podobnego funkcjonalnością i bezpieczeństwem względem istniejących. Skoro napisałeś dodatek do phpBB to może dostosuj go do Wordpressa, Jumla, Drupal.
Będziesz miał wtedy potencjalnie większą liczbę odbiorców oprogramowania.

0

@jurek1980: Dzięki, ale czy nie ma ryzyka, że jak użyję gotowca to mi o wiele łatwiej shackują stronę? :(

3

Raczej napisanie czegoś bezpiecznego od zera jest trudniejsze.

0

@mpaw: Więcej ryzyka, że chackują ci stronę, jeżeli będziesz używał własnego kodu, niż gotowca, który piszą już od 5+ lat kupa ludzi :)

3

No dobrze a jak to Twoja strona tylko to po co Ci CMS? Nie prościej zrobić coś w HTML +PHP czy w oparciu o jakieś Django czy Laravel jak będziesz miał mieć logowanie np.

1

@jurek1980: no właśnie chodzi mi o najprostszy CMS, bez żadnych wtyczek etc. Po prostu strona, z możliwością dodawania / edytowania postów + logowanie + wyszukiwarka

Tyle, że nie znam się na tych Laravelach itp. Nie wiem jaka technologia.

6

@mpaw: coś w tym jest.

O ile jestem prawie pewien, że efekt twojego pisania będzie gorszy (pod wieloma względami, w tym bezpieczeństwa) od jakiegoś sprawdzonego i znanego systemu, ale żeby radziecki hacker się włamał to będzie musiał się pobawić osobiście, automat raczej tutaj za wiele nie pomoże. A raczej nikt nie będzie tracić czasu na ręczny włam na stronę mechanika w Ustrzykach Górnych czy jakiejś firmy produkującej kapustę kiszoną.

Z drugiej strony - są narzędzia, ktore skanują wszystko co się da pod względem znanych luk bezpieczeństwa. I one doskonale wiedzą, jak się dobrać do Wordpressa czy innego znanego systemu.

Sam tak miałem 1 czy 2 razy - strona na WP postawiona i zostawiona samopas, po jakimś czasie została zaatakowana i to dość skutecznie. Nie było to nic ważnego, więc tragedia się nie stała, ale chcę pokazać, że jest to bardzo realny scenariusz.

Jeśli chcesz korzystać z WP czy innych gotowych rozwiązań to takie porady:

  • zanim to zainstalujesz to trochę poczytaj - jak to dobrze zainstalować, na co zwrócić uwagę
  • po instalacji zastosuj się do porad odnośnie zwiększenia bezpieczeństwa - usunąć zbędne moduły, zablokować niepotrzebne dostępy, zmienić hasła i loginy na nieoczywiste itp.
  • podczas posiadania - regularnie sprawdzaj, czy w logach nie ma czegoś podejrzanego
  • bądź na bieżąco, jak tylko pojawią się jakieś aktualizacje (zwłaszcza typu security lub bugfix) to je instaluj.

I tak nie będziesz mieć 100% pewności, zwłaszcza w przypadku tak zwanych zero day, ale znacząco zmniejszysz ryzyko wpadki.

2

To Jesse inaczej. Ile planujesz tam kontentu? Czy będziesz dodawać/modyfikować go 1 raz na tydzień ?
Poczytaj o wtyczkach do Laravel i zobacz ile ich jest https://laravel-news.com/laravel-cms-packages jak nie chcesz Wordpressa. A instalacja to tylko composer

0

Dzięki.

Może źle się wyraziłem: chodzi mi o prosty system z

  • rejestracją
  • logowaniem
  • możliwością dodawania / usuwania / edycji / zapisywania w poczekalni Postów
  • dodawania działów
  • osadzania HTML
  • komentarzami
  • linkowania do fb/twitter

To wszystko

@jurek1980: To będzie raczej baza wiedzy.

0

Widzę to tylko jako projekt do nauki dla OP'a. Z brakiem podstawowej wiedzy, rzucanie się na budowanie CMS'a do zastosowań komercyjnych nie ma racji bytu - szkoda czasu.

mpaw napisał(a):

@jurek1980: Dzięki, ale czy nie ma ryzyka, że jak użyję gotowca to mi o wiele łatwiej shackują stronę? :(

Możesz zrobić własną kłódkę do zabezpieczenia drzwi, pytanie czy będzie ona lepsza od tych dostępnych na rynku.

0
N3 napisał(a):

Z brakiem podstawowej wiedzy, rzucanie się na budowanie CMS'a do zastosowań komercyjnych

No właśnie po to założyłem ten temat. Jakie technologie i co must know.

0
mpaw napisał(a):

To będzie raczej baza wiedzy.

Jak baza wiedzy - baza wiedzy zakłada nie tylko podłużne sortowanie w dziedzinie czasu, ale linkowanie we wszystkich przekrojach, "poprzecznie" czy "gwiaździście".
Filozofia Wiki jest tu bardzo dobra. Z lekkich Wiki kiedyś pozytywnie używaliśmy Docuwiki, wdrożenie w godzinę (a dokładniej to kwadrans) i potem tylko tworzenie artykułów.

mpaw napisał(a):
  • osadzania HTML

Nie wiesz czego chcesz. Po pierwsze podnosisz poziom ryzyka BARDZO. Po drugie zabijasz edycję przez zwykłych ludzi
Wszelkie "bazy wiedzy" bazują na uproszczonym języku, np Wikimarkup czy markdown

N3 napisał(a):

Widzę to tylko jako projekt do nauki dla OP'a. Z brakiem podstawowej wiedzy,

Coraz bardziej się wydaje, że nie tylko programistycznej, ale w pracy z założeniami, wymaganiami

Pora dać pointę:
Weź coś gotowego, a jak w ogóle masz nadzieję programować,** zrobić plugin** , jeśli życie wskaże potrzebę.

2

Możesz zrobić własną kłódkę do zabezpieczenia drzwi, pytanie czy będzie ona lepsza od tych dostępnych na rynku.

To nie co końca tak. Raczej bym tu porównał do własnego zamka, który działa inaczej niż te dostępne w sprzedaży. Przychodzi złodziej, widzi otwór w drzwiach, próbuje standardowych wytrychów i sposobow, ale one nie działają.

Problemem może być to, że tworca zamka mógł coś przeoczyć/o czymś nie pomyśleć i o ile rzeczywiście standardowym wytrychem niczego nie zrobisz, ale wystarczy mocniej kopnąć drzwi i zamek odpadnie - bo wszystko jest mocowane z jednej strony na jedną śrubkę ;)

Jakie technologie i co must know.

Tutaj właściwie dowolna technologia się nada, zrobisz to w gołym PHP, HTML, CSS i js. To nie technologia jest ważna, tylko umiejętności. Jakbym dał ci narzędzia do wymiany rozrządu w silniku 5l V8 to raczej tematu nie ogarniesz, chociaż będziesz miał komplet narzędzi.

3
LibrarlaN napisał(a):

@mpaw: Więcej ryzyka, że chackują ci stronę, jeżeli będziesz używał własnego kodu, niż gotowca, który piszą już od 5+ lat kupa ludzi :)

Polemizowałabym. W tych robionych przez kupę ludzi systemach (np WP) ciągle jednak znajdują nowe błędy i wtedy jest pisk, że trzeba natychmiast aktualizować. I faktycznie trzeba, bo jak system popularny, to kupa robotów szuka w nich podatności (co widać chociażby w logach) i nie jest żadną rzadkością znaleźć zhakowany WP.

Z drugiej strony, jak masz własny silnik i nie jest on jakoś tragicznie zrobiony, to:

  • Nie ma na niego gotowych exploitów, którymi masowo testuje się strony www.
  • Żeby ktoś ci się włamał, musiałby to zrobić intencjonalnie i mieć coś akurat do twojej konkretnej strony. Przestępcom się to kompletnie nie opłaca, ew. jakiemuś dowcipnisiowi mogłoby się chcieć.

Z drugiej strony o pisanie własnego CMS-a do faktycznego użytku dla ludzi można się pokusić, jak masz już jakieś doświadczenie. Jeśli zamierzasz się dopiero uczyć tematu, to wyjdzie ci pewnie pojazd eksperymentalny z wszelkimi chorobami wieku dziecięcego i problemami w użytkowaniu. Ale pocieszę, że twój kolejny CMS zapewne będzie już lepszy :)

mpaw napisał(a):

No właśnie po to założyłem ten temat. Jakie technologie i co must know.

Sanityzacja danych.

6
mpaw napisał(a):

Dzięki.

Może źle się wyraziłem: chodzi mi o prosty system z

  • rejestracją
  • logowaniem
  • możliwością dodawania / usuwania / edycji / zapisywania w poczekalni Postów
  • dodawania działów
  • osadzania HTML
  • komentarzami
  • linkowania do fb/twitter

chodzi mi o prosty system z ...

Niestety magiczne zaklęcia w programowaniu tak nie działają.
Użycie słowa "prosty" nie zmienia złożoności zagadnienia z którym chcesz się zmierzyć.

Pewne zagadnienia wymagają minimalnej ale jednak profesjonalnej wiedzy aby spełniały zwoje zadania. Jak tego zabranie to później możemy spotkać "proste serwisy" z "prostym logowaniem" po stronie JavaScript z hasłem trzymanym w skrypcie, a dumny ze swojego działa autor nawet nie rozumie jak bardzo bez sensu rzecz stworzył.

0

Jak to ma być do nauki to bym kupił kurs z PHP na Udemy i pisał w gołym PHP. Tak jak pisał @katakrowa to wbrew pozorom dość złożony projekt bo bardzo przekrojowy i żeby to zrobić dobrze trzeba sporo wiedzieć/umieć, ale kto nie napisał prostego CMS na plikach z jakimś security by obscurity niech pierwszy rzuci kamieniem. Do nauki takie projekty są bardzo fajne, zwłaszcza jak przepisujesz je kilka razy. Frameworków na Twoim poziomie bym unikał bo będziesz programował na zasadzie copy&paste i zadawał 1000 banalnych pytań na forum.

1 użytkowników online, w tym zalogowanych: 0, gości: 1