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.

React - Das umfassende Handbuch für moderne Frontend-Entwicklung - Welcher Frontendentwickler hat noch nicht von React gehört? Diese ursprünglich von Facebook entwickelte JavaScript-Bibliothek hat innerhalb kurzer Zeit eine steile Karriere hingelegt. Sie bildet mittlerweile eine wichtige Grundlage für viele Unternehmensanwendungen, Single Page-Applikationen, sowie viele Apps für iPhone und Android. Erfahren Sie in diesem umfassenden Handbuch des JavaScipt-Experten Sebastian Springer, wie Sie performante Oberflächen gestalten. Mit einfachen und leicht verständlichen Beispielen erlernen Sie die Grundlagen von React, React Native und Redux. Und auch als fortgeschrittener JavaScript-Entwickler profitieren Sie von den vielen Profithemen wie Tests, Animationen, Material Design Components, Server Side Renderung über Debugging bis hin zur Entwicklung von vollständigen mobilen Anwendungen. Dieses Buch ist ein Muss für jeden JavaScript-Entwickler und für jeden, der React lernen möchte!

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