OctoberCMS porównanie zabezpieczeń z innymi systemami zarządzania treścią.

Masz do wykonania stronę internetową, opartą o system zarządzania treścią. Wordpress myślisz sobie jak 99.9999% Polaków/ludzi (badania przeprowadzone w mojej głowie, ale na 99,99% się zgadzają z rzeczywistością — trust me bro).
W wielu przypadkach jest to wybór, który pozwoli żyć w zgodzie z naturą. Jednak jest parę kwestii, które należy wziąć pod uwagę, a wśród nich jest ta jedna, skromna — bezpieczeństwo. Bo popularność to jedno, ale ma ono konsekwencje, które mogą Ci się nie podobać i może, tylko może, warto się przyjrzeć innym opcjom, zanim podejmiesz decyzję co do Twojej strony firmowej?
Ponieważ zajmuję się wdrażaniem nie tylko WordPress, a coraz częściej na tapetę rzucany jest OctoberCMS jako opcja, która jest przystępna, bezpieczna oraz łatwa w obsłudze, to postanowiłem dla Ciebie porównać najpopularniejsze systemy CMS w kontekście bezpieczeństwa. Do porównania dodałem Drupal i Joomla jako kolejne opcje, które można wziąć pod uwagę.
Podstawa, czyli na czym zbudowane są poszczególne systemy zarządzania treścią.
OctoberCMS — zbudowany na Laravelu nowoczesnej bazie kodowej, która pozwala na pozbycie się wielu problemów z marszu, problemów, które do tej pory są obecne w Wordpress.
OctoberCMS
- Zbudowany na Laravel, aktualnie najpopularniejszym frameworku PHP, znanym z podejścia do bezpieczeństwa jako pierwszego, najważniejszego filaru. W odróżnieniu od Laravel system szablonów to Twig, a nie Blade, gdzie różnice to tak naprawdę składnia i niuanse, oba mają wbudowane funkcje bezpieczeństwa, jakimi jest escaping,
- ponieważ OctoberCMS nie jest przywiązany do żadnej konkretnej bazy danych, a nawet możliwe jest całkowite z niej zrezygnowanie i bazowanie tylko na plikach, pozbywa się dzięki temu kilku możliwości ataku (jak SQL injection)
- w uderzanych sportach walki jedną z koncepcji jest zmniejszenie celu (dla przeciwnika) poprzez ustawienie się pod kątem, podobna sytuacja jest z OctoberCMS - dzięki mniejszej popularności powierzchnia ataku automatycznie się zmniejsza, gdyż zmniejsza się (incentive)
WordPress:
- Zbudowany na niestandardowej bazie kodu PHP, która, choć dojrzała, zawiera starszy kod z czasów, gdy była platformą blogową. Może to sprawić, że będzie bardziej podatny na luki w zabezpieczeniach, jeśli nie będzie starannie zarządzany,
- opiera się w dużej mierze na bazie danych dla treści i konfiguracji, zwiększając ryzyko wstrzyknięcia kodu SQL, jeśli wtyczki lub motywy są źle zakodowane,
- ogromna popularność (dane się różnią ale oscylują w przedziale 19-39%) sprawia, że jest to główny cel dla atakujących, zwiększając wpływ wszelkich luk w zabezpieczeniach.
Joomla:
- Zbudowana na niestandardowym frameworku PHP z architekturą opartą na komponentach. Jest bardziej ustrukturyzowana niż WordPress, ale mniej nowoczesna niż Laravel i nie posiada niektórych wbudowanych funkcji bezpieczeństwa, takich jak automatyczne ucieczki,
- podobnie jak WordPress, opiera się na bazie danych, wymagają starannej walidacji danych wejściowych, aby zapobiec atakom typu
injection
.
Drupal:
- Zbudowany na komponentach Symfony, nowoczesnym frameworku PHP podobnym do Laravel, dającym mu silne podstawy bezpieczeństwa. Zawiera bezpieczne standardy kodowania i solidne interfejsy API,
- zawiera wiele baz danych, podobnie jak WordPress i Joomla, ale jego bardziej rygorystyczna architektura zmniejsza prawdopodobieństwo wystąpienia luk w porównaniu do mniej zdyscyplinowanych systemów.
Bezpieczeństwo wprowadzanych oraz wyświetlanych danych w systemach zarządzania treścią.
Sekcja, która dotyczy danych, ale o co dokładnie chodzi? W informatyce dużo można napsuć znając sposoby, dzięki którym program wykona zadanie, którego nie powinien, bo w danych czy to wejściowych czy wyjściowych pojawił się kod, który uruchomił niechcianą czynność. Jeśli miałeś kiedykolwiek do czynienia z programowaniem np. w SQL, to wiesz że symbole takie jak '
czy "
służą do oznaczenia początku i końca znaków do np. wyszukiwania.
Ważne, że warto brać pod uwagę i weryfikować kod zaplecza, czyli to, czego użytkownik nie widzi, a co wpływa na fonkcjonalności na stronie związane z danymi. Przykładowo źle zaprojektowane i zakodowane pola np. do uzupełniania formularzy lub co gorsze logowania, mogą przyczynić się do ataków i "fałszywych" zalogowań mimo, że hacker nie znał hasła ani nawet loginu.
Tutaj przykład braku przypilnowania walidacji danych na poziomie serwera. Kod pokazany to SQL który nie powinien być widoczny dla programisty bądź testera która nie pracuje nad systemem.
OctoberCMS:
- Używa języka szablonów Twig, który automatycznie za pomocą czynności
escap
w elemencie kodu dane wyjściowe, co zapobiega atakom typuCross-Site scripting (XSS)
- chyba, że sami zdecydujemy, aby tych danych nie zmieniać. - Laravelowy ORM (Eloquent) używa zapytań przygotowanych, eliminując zagrożenie wstrzykiwania kodu, o którym wspomniałem wyżej, zwiększając bezpieczeństwo posługiwania się bazą.
WordPress:
- Nie posiada automatycznego blokowania danych
(data escape)
trzeba je ręcznie wykonywać przez funkcje np.esc_html()
lubwp_kses()
, aby zapobiegać atakom XSS. Jednak w gąszczu prac czasami to umyka i podatności te pojawiają się w szablonach oraz wtyczkach. - Podstawowe interakcje z bazą danych używają przygotowanych zapytań przez
$wpdb
, ale przez dużą swobodę kodowania wtyczki mogą wprowadzić punkty podatne na wstrzykiwanie kodu.
Joomla:
- Zapewnia klasy pomocnicze do oczyszczania danych wejściowych i ucieczki danych wyjściowych, ale nie jest to wymuszane domyślnie, tak jak Twig w OctoberCMS. Programiści muszą wyrazić zgodę, co może prowadzić do niedopatrzeń,
- zapytania do bazy danych są generalnie bezpieczne, dzięki konstruktorowi zapytań, ale niestandardowy kod może nadal narażać na ryzyko.
Drupal:
- Wykorzystuje Twig (od Drupal 8), podobnie jak OctoberCMS, zapewniając automatyczną ucieczkę danych wyjściowych i silną ochronę przed XSS,
- jego warstwa abstrakcji bazy danych wymusza przygotowane instrukcje, oferując solidną ochronę przed wstrzyknięciem SQL.
Logowanie i autoryzacja w systemach CMS.
Póki nie mamy jeszcze dostępnych komputerów kwantowych, dzięki którym albo przez które łamanie obecnych haseł będzie spacerkiem, to warto zwrócić uwagę jak systemy załatwiają sprawy logowania do ich zaplecza, czyli jak bezpieczne są ich algorytmy.
Logowanie do systemów CMS odbywa się za pomocą funkcji haszujących, czyli takich które pozwalają zakodować znaki w jedną stronę (nie ma klucza deszyfrującego).
To, jak bezpieczna jest funkcja haszująca zależy od rodzaju algorytmu, jaki jest używany do kodowania znaków. Popatrzmy więc jak to rozwiązują następujące systemy.
Dodatkowo rzucimy okiem na system przyznawania praw dla użytkowników, czyli tego jakie będą posiadać uprawnienia (co mogą robić, a co nie w zapleczu/panelu administracyjnym).
Logowanie w OctoberCMS:
- Dziedziczy z laravelovego systemu bezpiecznego logowania, w tym hashowane hasła używając algorytmu bcrypt () poziomów dostępu, opartego na rolach oraz zarządzanie sesjami użytkowników z konfigurowalnymi opcjami jak np. bezpieczne ciasteczka, wygaśnięcie sesji,
- system ten oferuje dokładne zarządzanie przywilejami użytkowników na podstawie grup, ról oraz włączenia, dziedziczenia lub wyłączenia danej opcji pozwalając na przypisanie każdego dostępu do osoby.
Logowanie w WordPress:
- Używa prostszego systemu autoryzacji przez haszowanie MD5, znów jest możliwość podniesienia tego dzięki wtyczkom. Jest to wystarczająco funkcjonalne ale mniej wyszukane niż u konkurencji.
- Poziomy dostępu oparte na rolach, np administrator, redaktor, dokładniejsze poziomy dostępu często wymagają instalowania dodatkowych wtyczek (które trzeba przetestować i sprawdzić co daje potencjalne możliwości ataków) lub zakodowania zmian w szablonie co jest opcją mniej dobrą bo sama zmiana jest przypisana do szablonu.
Logowanie - Joomla:
- Zawiera solidny system list kontroli dostępu (ACL), umożliwiający szczegółowe ustawienia uprawnień dla użytkowników i grup. Jest to bardziej zaawansowane niż domyślna konfiguracja WordPressa.
- Hasła są bezpiecznie hashowane (bcrypt od Joomla 3.2), zgodnie z nowoczesnymi standardami.
Drupal - logowanie:
- Oferuje wysoce konfigurowalny system uprawnień, jeden z najbardziej szczegółowych wśród platform CMS, umożliwiający precyzyjną kontrolę nad rolami i działaniami użytkowników.
- Wykorzystuje bezpieczne hashowanie haseł (PHP's password_hash) i silne zarządzanie sesjami, porównywalne z Laravel.
Rozszerzenia w systemach CMS czyli wtyczki, szablony.
Czytasz i myślisz co to ma wspólnego z bezpieczeństwem? A więc mój drogi Watsonie (nie ten z IBM): większa ilość wtyczek, szablonów często darmowych i swoboda kodowania (przez którą PHP był/jest tak mocno hejtowany, przez wiele osób otrzymał miano nieprawidłowego języka link) zwiększa podatność na ataki i luki. Jednak różne systemy radzą sobie na swój sposób z tym, jak - ano tak:
Wtyczki w OctoberCMS:
- Wtyczki i motywy są dostępne za pośrednictwem strony centralnie sterowanej, z procesem weryfikacji w celu zapewnienia jakości i bezpieczeństwa. Mniejszy ekosystem zmniejsza ilość potencjalnie niebezpiecznych rozszerzeń w porównaniu do WordPressa,
- programiści mogą używać Composera do zarządzania zależnościami, wykorzystując bezpieczny ekosystem pakietów Laravel.
Wtyczki i szablony WordPress:
- Ogromny ekosystem wtyczek/tematów (ponad 60 000 wtyczek) to miecz obosieczny: choć bogaty w funkcje, wiele rozszerzeń jest źle utrzymanych (bądź opuszczonych) lub zawiera luki w zabezpieczeniach. Proces weryfikacji WordPress.org wyłapuje niektóre błędy, ale nie wszystkie,
- wtyczki często mają nadmierne uprawnienia, co zwiększa ryzyko ich wykorzystania.
Joomla - wtyczki:
- Mniejszy ekosystem rozszerzeń niż WordPress, z procesem weryfikacji oficjalnego katalogu. Rozszerzenia firm trzecich mogą jednak nadal wprowadzać luki w zabezpieczeniach, choć rzadziej niż WordPress ze względu na mniejszą popularność,
- zarządzanie zależnościami jest mniej usprawnione niż integracja z Composerem w OctoberCMS.
Wtyczki - Drupal:
- Silny nadzór nad bezpieczeństwem modułów/tematów za pośrednictwem zespołu ds. bezpieczeństwa, który aktywnie monitoruje i łata luki w zabezpieczeniach. Społeczność kładzie nacisk na bezpieczne praktyki kodowania,
- mniejszy ekosystem niż WordPress, co zmniejsza liczbę potencjalnych słabych punktów.
Reakcja na podatności (ataki wykryte luki) i aktualizacje w systemach CMS.
Proces tworzenia oprogramowania to zastępowania starych błędów nowymi, ponieważ nie ma oprogramowania idealnego, a to w jaki sposób twórcy czy społeczność reaguje na zagrożenia często jest być albo nie być konkurencyjnym świecie.
OctoberCMS jak radzi sobie z atakami:
- Wspierany przez oddany zespół i społeczność Laravel, aktualizacje są częste i szybko rozwiązują kwestie bezpieczeństwa. Mniejsza baza użytkowników oznacza jednak mniejszą liczbę rzeczywistych testów luk w zabezpieczeniach.
- Porady dotyczące bezpieczeństwa są mniej sformalizowane w porównaniu do Drupala czy WordPressa, polegając bardziej na ekosystemie Laravel w zakresie łatek.
- Aktualizacje do większych wersji robione są skokowo, ciężko tutaj obyć się bez wiedzy aby nie namieszać.
WordPress aktualizacje i odporność na ataki:
- Główny zespół szybko reaguje na luki w zabezpieczeniach, z automatycznymi aktualizacjami dostępnymi dla mniejszych wydań. Jednak sama ilość zgłaszanych błędów (ze względu na jego popularność) może przytłoczyć użytkowników.
- Aktualizacje wtyczek/tematów zależą od poszczególnych deweloperów i często pozostają w tyle za podstawowymi łatkami.
- Aktualizacja najczęściej są ciągłe i nie ma większych zagrożeń jednak jest tutaj dużo więcej do pilnowania odnośnie wtyczek i szablonów.
- Ostatnie zamieszanie względem WP Engiene ich wykluczenia spowodowane przez działania ceo wordpress Matta Mullenweg doprowadziło do rozdarcia wewnątrz społeczności które mogą mieć wpływ na szybkość, jakość i dobre intencje osób poprawiających kod
Joomla - zabezpieczenia:
- Security Strike Team (JSST) aktywnie monitoruje i łata luki, z dobrymi wynikami w zakresie terminowych aktualizacji. Mniejsza społeczność oznacza mniej zgłoszonych problemów niż w przypadku WordPressa.
- Aktualizacje są proste, choć nie tak zautomatyzowane jak w przypadku WordPressa.
Zabezpieczenia przed atakami w Drupal:
- Znany zespół ds. bezpieczeństwa publikuje porady i koordynuje szybkie poprawki. Proaktywne podejście Drupala i rygorystyczne standardy kodowania minimalizują luki w zabezpieczeniach,
- aktualizacje są dobrze zarządzane, choć duże aktualizacje wersji (np. Drupal 9 do 10) mogą być skomplikowane.
Łagodzenie skutków typowych ataków w systemach CMS.
Jest wiele ataków tak popularnych, że ich ograniczanie i próby blokowania stały się standardem. "Oczyszczanie" danych danych wejściowych oraz wyjściowych o których już wspomniałem, ale także bardziej złożone nie zawsze programistyczne ale bazujące na zwykłej nieuwadze lub ukrywające się pod powierzchnią.
OctoberCMS:
- Ochrona przed
CSRF
dzięki oprogramowaniu pośredniczącemu Laravel, ograniczenie szybkości i bezpieczne przesyłanie plików z walidacją.XSS
iSQL
injection są skutecznie neutralizowane przez Twig i Eloquent, - ograniczona popularność zmniejsza liczbę ukierunkowanych ataków w porównaniu do WordPressa.
WordPress:
- Rdzeń zawiera podstawową ochronę
CSRF (nonces)
i ograniczenia przesyłanie plików, ale wtyczki / motywy mogą je ominąć. Powszechne są brutalne ataki logowania, często wymagające dodatkowych wtyczek bezpieczeństwa (np. Wordfence), - częsty cel dla wyłudzeń ze względu na swoją dominację.
Joomla:
- Wbudowane tokeny
CSRF
i filtrowanie przesyłanych plików. Podatny na ataki typu brute-force, jeśli nie zostanie wzmocniony (np. za pomocą uwierzytelniania dwuskładnikowego, dostępnego natywnie od wersji 3.2), - mniej ukierunkowany niż WordPress, ale bardziej niż OctoberCMS.
Drupal:
- Silna ochrona
CSRF
, bezpieczna obsługa plików i wbudowane ograniczanie ataków brute force (np. limity prób logowania). Uwierzytelnianie dwuskładnikowe jest natywnie obsługiwane, - rzadko wykorzystywane na dużą skalę ze względu na bezpieczną konstrukcję i mniejszą powierzchnię.
Podsumowanie funkcji bezpieczeństwa systemów zarządzania treścią.
OctoberCMS jest doskonałym wyborem dla projektów, w których priorytetem jest nowoczesne bezpieczeństwo od razu po zainstalowaniu, szczególnie dla programistów czujących się komfortowo z Laravelem. Przewyższa WordPress i Joomla pod względem domyślnych zabezpieczeń i prostoty, a jednocześnie nie ustępuje Drupalowi, który przewyższa go główne ze względu na lata (dojrzałość).
System ten rozwija się szybko i na bieżąco aktualizuje kwestie bezpieczeństwa. Aktualnie nie wahał bym się wykorzystać go do projektów o każdym rozmiarze.
Funkcja bezpieczeństwa | OctoberCMS | WordPress | Joomla | Drupal |
---|---|---|---|---|
Framework/Architektura | Zbudowany na Laravel (nowoczesny framework PHP); strony oparte na plikach zmniejszają zależność od bazy danych; mniejsza powierzchnia ataku. | Niestandardowa baza kodu PHP ze starszymi elementami; oparta na bazie danych; duża powierzchnia ataku ze względu na popularność. | Niestandardowy framework PHP; oparty na bazie danych; bardziej ustrukturyzowany, ale mniej nowoczesny niż Laravel. | Zbudowany na Symfony (nowoczesny framework PHP); oparty na bazie danych; silna architektura. |
Sanityzacja danych wejściowych i ucieczka | Twig templating auto-escapes output (XSS protection); Eloquent ORM uses prepared statements (SQL injection-safe). | Brak domyślnego escapingu; wymagane ręczne użycie `esc_html()`; `$wpdb` używa prepared statements, ale wtyczki różnią się. | Klasy pomocnicze do sanityzacji, nie wymuszone; konstruktor zapytań bezpieczny, ale ryzyko niestandardowego kodu pozostaje. | Twig automatycznie wypisuje dane wyjściowe (ochrona przed XSS); warstwa bazy danych wykorzystuje przygotowane instrukcje (bezpieczne dla SQL). |
Uwierzytelnianie i autoryzacja | Bezpieczne uwierzytelnianie Laravel (haszowanie bcrypt, role, sesje); precyzyjne uprawnienia zaplecza. | Prostsze uwierzytelnianie (domyślnie MD5, z możliwością aktualizacji); podstawowe role, szczegółowa kontrola za pomocą wtyczek. | Solidna lista ACL dla uprawnień; haszowanie bcrypt od wersji 3.2; bezpieczne zarządzanie sesjami. | Wysoce konfigurowalne uprawnienia; `password_hash` dla bezpieczeństwa; silne zarządzanie sesjami. |
Rozszerzenia innych firm | Wyselekcjonowany Marketplace; Composer dla zależności; mniejszy ekosystem redukuje słabe punkty. | Ogromny ekosystem wtyczek/tematów (ponad 60 tys.); wiele z nich nieobsługiwanych lub podatnych na ataki; ograniczony proces weryfikacji. | Mniejszy ekosystem z procesem weryfikacji; mniejsze ryzyko niż w przypadku WordPressa, ale mniej usprawniony. | Wyselekcjonowane moduły/tematy; nadzór zespołu ds. bezpieczeństwa; mniejszy ekosystem skoncentrowany na jakości. |
Reakcja na lukę w zabezpieczeniach | Częste aktualizacje za pośrednictwem ekosystemu Laravel; mniej sformalizowane porady; mniejsza baza użytkowników testujących. | Szybkie aktualizacje rdzenia (automatyczne dla nieletnich); aktualizacje wtyczek różnią się; duża liczba błędów ze względu na skalę. | Zespół ds. bezpieczeństwa szybko wprowadza poprawki; dobry proces aktualizacji; mniej problemów niż w przypadku WordPressa. | Zespół ds. bezpieczeństwa z poradami; szybkie poprawki; dojrzały proces; złożone duże aktualizacje. |
Łagodzenie skutków typowych ataków | CSRF przez oprogramowanie pośredniczące, ograniczenie szybkości, bezpieczne przesyłanie; Twig/Eloquent blokuje XSS/SQL injection. | Podstawowy CSRF (nonces), ograniczenia przesyłania; powszechna brutalna siła, wymaga wtyczek do pełnej ochrony. | Tokeny CSRF, filtrowanie przesyłania; ryzyko brutalnej siły, chyba że jest wzmocnione (2FA natywne od 3.2). | Silny CSRF, ograniczenia brute-force, bezpieczne przesyłanie; natywne 2FA; rzadko wykorzystywane na dużą skalę. |
Który system CMS jest najbezpieczniejszy?
Jak więc widzisz między wieloma wyborami łatwo jest się pogubić. Na szczęście nie musisz się martwić, bo dobrze wdrożony system to połowa sukcesu. Artykuł ten ma na celu uświadomić, że domyślny wybór niekoniecznie będzie nalepszy, a mniejsi gracze często mają zalety, które przeważają nad tymi dużymi.
Ja od lat pracuję na Wordpress i jest to system, którego zaletą jest to, że jeśli coś potrzebujesz to najprawdopodobniej ktoś już wymyślił do tego wtyczkę. Jakiej jest jakości i jak zostanie ona wdrożona, to zupełnie inna bajka.
OcroberCMS ma zalety, które przy wsparciu dewelopera spowodują, że system ten trzeba będzie w minimalnym stopniu doglądać.