CleanCMS - a FlatFile CMS without Bullshit


Ein einfaches FlatFile Content Management System mit Router, Middleware, Markdown-Parser, Template-Engine, Voting, RateLimiter, Shortcodes, Plugins, Pre- und PostFilters. CleanCMS ist mit dem Ziel angetreten keine externen Abhängigkeiten zu Drittanbietern zu besitzen, um den Angriffsvektor oder Exploids auf Null zu reduzieren.

NiftyCMS - ein eigenes CMS entwickeln - Die Entwicklung eines eigenen Content Management Systems (CMS) mag auf den ersten Blick wie eine entmutigende Aufgabe erscheinen. Große Systeme wie WordPress oder Joomla scheinen unendlich komplex und sind das Ergebnis jahrelanger Arbeit großer Entwicklerteams. Doch die gute Nachricht ist - Ein CMS muss nicht komplex sein, um effektiv zu sein. Mit den richtigen Grundlagen, einem klaren Fokus und einer überschaubaren Zielsetzung kann jeder Entwickler - ob Einsteiger oder erfahrener Programmierer - ein eigenes, maßgeschneidertes CMS erstellen.

Die Webseite ist Mitglied im Amazon Partnernet und kann mit Verkäufen über Affiliate-Links, den Betrieb der Seite etwas unterstützen - für Sie ist das natürlich vollkommen kostenlos.

Podcast

News

Lorem ipsum 1

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum 2

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum 3

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

____

Oliver Lohse 13.12.2024

Lorem ipsum 4

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum 6

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum 7

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Kategorien

Plugins, Pre- PostFilters


Plugins, PreFilters und PostFilters, sind ein sehr wichtiger Bestandteil des CleanCMS. Plugins verleihen dem System neue individuelle Eigenschaften und hilfreiche Funktionen.

Lorem ipsum 1


In diesem mehrteiligen Workshop entwickeln Sie ein eigenes kleines Content Management System mit einer Flatfile Datenbank und Markdown Parser - inkl. Download.

Lorem ipsum 2


Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

Lorem ipsum 2


In der zweiten Hälfte des Workshops, geht es darum, das kleine CMS noch weiter auszubauen und vollwertig zu machen. Sie binden die Template-Engine Smarty ein.

Empfehlung verschiedener Artikel

Plugin Syntax


Für die Erstellung individueller Funktionen, Erweiterungen und Eigenschaften mittels Plugins, ist die folgende Plugin-Syntax notwendig.

Der RateLimiter


Der RateLimiter hat in CleanCMS die Aufgabe, die Frequenz der Zugriffe pro Zeiteinheit zu verlangsamen und Bots oder Hacker zu blockieren.

Lorem ipsum 1.1


Was das eigene Content Management System können soll und welche Eigenschaften es haben wird.

Plugin Syntax


Für die Erstellung individueller Funktionen, Erweiterungen und Eigenschaften mittels Plugins, ist die folgende Plugin-Syntax notwendig.

Plugin Syntax


Für die Erstellung individueller Funktionen, Erweiterungen und Eigenschaften mittels Plugins, ist die folgende Plugin-Syntax notwendig.

Empfehlungen aus Lorem ipsum 2

Lorem ipsum 2.1


In diesem Artikel werfen wir einen Blick auf zwei einfache Router-Konzepte und zeigen, wie Sie damit Struktur und Übersichtlichkeit in Ihre Anwendung bringen können.

Lorem ipsum 2.2


Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

About CleanCMS

Dieses extrem leichtgewichtige, im MVC-Design Pattern erstellte Content Management System, besitzt ein Minimum an externen Abhängigkeiten zu unsicheren Produkten oder Bibliotheken von Drittanbietern. CleanCMS ist dennoch voll ausgestattet und besitzt einen Template-Parser, einen PHP-Router, einen Shortcode-Parser, Plugins, preFilter, postFilter, RateLimiter und einen Markdown-Parser. Darüber hinaus ist CleanCMS rasend schnell.

Anmerkung vom Projekt: Der Versuch einen kleinen und leichtgewichtigen Markdown-Parser zu entwickeln erbrachte nicht das gewünschte Resultat, sodass sich das Projekt dazu entschlossen hat, die bekannte Bibliothek Parsedown und ParsedownExtra als einzige externe Abhängigkiet einzubinden. Der ursprünglich konzipierte Markdown-Parser übernimmt nun die Aufgabe des Shortcut-Parsers.

PHP-Router

Statt der Verwendung eines externen PHP-Routers, verwendet CleanCMS einen eigens entwickelten Router, der langlebig, leicht zu verstehen und preiswert zu warten ist. Die Funktionsweise orientiert sich dabei an bekannten Patterns wie sie beispielsweise in Flight-Microframework oder Lemonade bekannt sind.

Template-Engine

Aus Sicherheitsgründen unterstützt, die eigens für CleanCMS entwickelte Template-Engine, keine Einbettung von PHP-Tokens. Sofern dynamische Inhalte in Templates eingebunden werden sollen, können diese mittels Plugins, preFilters oder postFilter einfach eingebunden werden. Der Core des CMS bleibt dadurch klein un kompakt und kann beliebig modular erweitert werden.

Shortcut Parser

CleanCMS unterstützt die Verwendung so genannter Shortcuts im Template und/oder in Beitragstexten. Mit solchen Schortcuts können wiederkehrende HTML- oder Textblöcke simpel eingebettet werden aber auch JavaScripte können individuell in Texte und Artikel eingehängt werden, um beispielsweise die beliebte JavaScript Bibliothek Chartist, für die Darstellung von Charts, nutzen zu können.

Angriffsvektor ist Null

Durch den radikalen Verzicht auf externe Bibliotheken und den Einsatz von minimalem Programmcode, ist der Angriffsvektor dieses Content Management Systems gleich Null.

Der Einsatz von Middleware

CleanCMS ist mit einem einfachen PHP-Router ausgestattet, der es ermöglicht so genannte Middleware zu verwenden. Dabei handelt es sich im wesentlichen um registrierte Routinen, die explizit vor dem Routing der User-Anfragen abgearbeitet werden. Mit Hilfe dieser Funktionen können diverse Prüfungen und Checks vor der Abarbeitung des User-Requests ausgeführt werden.

Prüfung auf Login

Ein wesentliches Einsatzgebiet von Middleware ist die Prüfung, ob Besucher am System angemeldet sind, indem die Server-Variable $_SESSION['user'] geprüft wird.

$router->addMiddleware(function($method, $uri) {
    if (!isset($_SESSION['user'])) {
        http_response_code(401);
        echo "Unauthorized";
        return false;
    }
    return true;
});

Code

Sofern der Besucher nicht angemeldet ist, liefert die Middleware false und der Router stoppt die Abarbeitung des Prozesses.

CORS Anfragen (Cross Orign Anfragen)

Ein weiteres Einsatzgebiet für Middleware sind die CORS-Anfragen, um dem Browser mitzteilen, das sie Requests von einer anderen Domain akzeptieren können.

$router->addMiddleware(function($method, $uri) {
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
    return true;
});

Code

Rate Limiting

Der Schutz vor Angriffen oder zu vielen Anfragen von ein und der selben IP-Adresse, können mit Middleware abgefangen und unterbunden werden. Insbesondere werden Zugriffe duch künstliche Intelligenz, Bots und Spider immer relaventer und Betreiber von Webseiten können sich mit einem RateLimiter effektiv gegen ungefragten Datenklau schützen.

$router->addMiddleware(function($method, $uri) {
    $ip = $_SERVER['REMOTE_ADDR'];
    if (!RateLimiter::allowRequest($ip)) {
        http_response_code(429);
        echo "Too Many Requests";
        return false;
    }
    return true;
});

Code

Liefert der RateLimiter den logischen Wert true für die entsprechende IP-Adresse zurück, stoppt die Verarbeitung des Systems und der Response-Code 429 wird gesendet.

CleanCMS nutzt einen solchen RateLimiter, um massenhafte automatisierte Zugriffe oder Angriffsversuche zu erkennen und wirksam zu verlangsamen. Das Messintervall ist auf 60 Sekunden festgelegt und erlaubt in dieser Zeitspanne maximal 20 Requests. Erst nach Ablauf des Intervalls von 60 Sekunden, sind weitere 20 Zugriffe möglich. Diese Einstellung würde einem natürlichen Leser und Besucher der Webseite entsprechen.

URL Sanitizer

Das Bereinigen der URL von schadhaften Inhalten kann ebenfalls durch Middleware verarbeitet werden.

$router->addMiddleware(function($method, $uri) {
    $_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
    $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
    return true;
});

Code

Vorteile der Middleware: Einmal definiert, kann Middleware auf viele Routen angewendet werden. Änderungen an einer Middleware wirken sich auf alle relevanten Routen aus. Trennung von Logik, die vor der Routenverarbeitung ausgeführt werden soll. Durch Middleware kann der Router flexibel anpasst werden und wichtige Vorverarbeitungsaufgaben effizient implementiert werden.

13.12.2024 Oliver Lohse

Impressum


Diese Webseite ist eine reine Projekt- und Entwickler-Seite rund um das Content Management System CleanCMS.

Datenschutz


Die Webseite CleanCMS verwendet keinerlei Tracking oder andere Speichermechanismen, um Rückschlüsse auf Leserverhalten oder IP Adresse zu erhalten.

Kontakt


Kontakt@Oliver-Lohse.de

supportet by: CMSWorkbench - FlightCMS - SmartyCMS - safeCMS - smallCMS - yamlCMS - GIMP Handbuch - Oliver Lohse