Mein Vorsatz für das neue Jahr…

Ich bin kein Mensch, der exakt zu Silvester Vorsätze für das neue Jahr nimmt, sondern ich stelle mir selbst Ziele, wenn ich der Meinung bin, dass es nötig wird. Im letzten Jahr war dies im Sommer der Fall, in dem ich entschloss, abzunehmnen. Ich bin nun konstant bei unter 80kg und habe also mein Ziel erreicht.

Der Vorsatz, den ich gestern gefasst habe, wird jedoch leider schwieriger, als "einfach nur" meine Ernährung umzustellen. Natürlich wird es auch Spaß machen, aber in erster Linie wird es Arbeit sein. Meine Idee ist es, ein eigenes Content Management System zu schreiben. Nicht einfach nur ein CMS, sondern eins, dessen Hauptziel die Sicherheit der Anwendung sein soll. Trotzdem soll es ähnlich erweiterbar sein wie WordPress - nur ohne den ganzen Eyecandy-Balast und vor allem mit einer überschaubaren Struktur.

Natürlich könnte man jetzt sagen "Nimm doch CMS XYZ, das IST sicher!" oder "Wordpress ist doch sicher genug!". Leider muss ich bei meinen Recherchen immer wieder feststellen, dass es sich dabei immer nur um gefühlte Sicherheit handelt. Ich habe bisher noch kein CMS gefunden, das ein ausgewiesenes Sicherheitskonzept besitzt. Hier geht es mir garnicht darum, dass diese anhand von Penetrationtests "beweisen", dass sie sicher sind, sondern darum, dass es eine Sicherheitsideologie bei der Entwicklung gibt.

Diese spreche ich z.B. per se allen Webanwendungen ab, die für die Sicherung der Datenbank ausschließlich Software-side Security einsetzen, sprich: Software, die einen einzigen Datenbanknutzer hat und innerhalb der Software erkennt, zu welcher Zeit welche Befehle ausgeführt werden dürfen. Ich halte diesen Ansatz für "Broken by Design" und werde entsprechend einen anderen Ansatz wählen.

Was ich übernehmen werde, ist das Filtersystem (man kann Code in die Seitengenerierung injizieren), sowie die Möglichkeit (nicht den Zwang), Slugs automatisch generieren zu lassen.

Was mir am schwersten fallen wird? Das wird wohl eindeutig das Eyecandy sein. Ich bin Architekt und Programmierer, kein Designer. Ich hoffe deshalb, dass das CMS zumindest so gut ankommen wird, dass sich ein Freiwilliger findet, der sich um das Aussehen der Anwendung kümmern wird. Das zumindest ist mein großer Wunsch. 🙂
Vorsätzliche Grüße, Kenny

11 Kommentare » Schreibe einen Kommentar

  1. Na, das ist doch mal eine Aufgabe 😉 Es stimmt schon, dass die Sicherheitskonzepte der gängigen Lösungen richtigen Angriffen kaum genügen können, aber alles neu entwickeln, uff, Hut ab, wenn Dir das gelingt!

    • Das Problem ist halt wirklich, dass viele Produkte auf der grünen Wiese entstehen und gar kein (Sicherheits-) Konzept als Grundlage haben.

  2. Ich brauche kein Silvester, um mir irgendwelche Vorsätze zu machen, die ich nach einem Monat eh wieder vergessen habe. Ich glaube, sowas machen nur Menschen, die es brauchen, um sich immer wieder selbst daran zu erinnern, was sie im vergangenen Jahr falsch gemacht haben.

    Besser ist es doch, seine eigenen "Grundsätze" Tag für Tag zu leben und umzusetzen, anstatt sich auf diesen einen Tag im Jahr zu versteifen. Ich steh jeden Tag auf und habe einen Plan, was ich schaffen will und was meine Ziele sind. Silvester ist dann eher so ein Tag, wo man Revue passieren lässt, ob man seine Ziele erreicht hat.

  3. Hallo,

    viel Sicherheit könnte man schon mit unkomplizierten Maßnahmen erreichen: Zum Beispiel simple Maßnahmen wie Prepared Statements nutzen (PDO). Außerdem Klassenstrukturen schaffen, die Validationen usw. immer nach dem gleichen Muster durchführen. Hier kann ein Framework helfen.

    Bei WordPress sind immer neue auftauchende Bugs vorprogrammiert. Das Template- und Plugin-System lässt natürlich einfach Änderungen zu, aber ist code-technisch eine Katastrophe. Die Anwendungslogik ist auf alle Bereiche verstreut, total vermischt und obendrein schlecht umgesetzt. Das ist ein Gordischer Knoten, in diesem Leben wird WordPress nicht sicher, da hilft nur Neustart. Geht natürlich auch nicht, weil WordPress auf den Produkten der Entwickler-Community baut (vgl. Firefox).

    • Ja, Prepared Statements und andere "simple Maßnahmen" sind sicherlich ein Grundbaustein, beheben jedoch IMHO das Grundproblem nicht - das fehlende Sicherheitskonzept. Das fällt mir oft bei Projekten (vor allem in der Open Source Welt) auf: Es wird drauf los programmiert (weil das eben der coole und spannende Teil ist), irgendwann fängt man mit einer Doku an und Sicherheitsfeatures werden eingebaut, wenn man gerade mal dran denkt oder eine Lücke gemeldet/ausgenutzt worden ist.

      Das mag jetzt ein Schock sein, aber ich denke nicht, dass das CMS objektorientiert sein wird. Auch, wenn ich beruflich Objektorientierung propagiere, denke ich, dass sie für Scriptsprachen wie PHP völlig ungeeignet sind. Webanwendungen sollten (IMHO) darauf beruhen, möglichst linear und möglichst zustandslos zu arbeiten. Wozu also komplexe Klassen strukturen aufbauen, die primär dazu da sind, um komplexe Laufzeitzustände zu kapseln? IMHO machen genau solche aufgeblähten Konstrukte einen Großteil der Probleme aus - vor allem dann, wenn sie überhaupt nicht notwendig sind.
      Wenn man es sich mal genau überlegt: Ein CMS ist im Grundteil ein ziemlich einfaches Stück Software. Man hat einen Namen (eine URL oder eine Content-ID), dieser muss aus einem Datenbestand (z.B. einer DB) herausgesucht und angezeigt werden. Das sind die magischen 80% auf der Besucherseite. RSS-Feeds, Kommentare und Kategorieübersichten sind die restlichen 20%. Das ist ein typischer Eingabe-Verarbeitung-Ausgabe Ablauf ohne Schnörkel. 🙂

      Wenn die ersten Konzepte stehen, werde ich etwas genauer auf den internen Aufbau eingehen. Denke mal, Ende der Woche bin ich soweit.

  4. Hey, die Idee hab ich schon seit Jahren, aber hab sie nie wirklich umgesetzt... :/
    Hast du schon ne bestimmte Plattform, mit der du liebäugelst (z.B. PHP+MySQL)?

    • Das ganze wird für PHP+MySQL entwickelt. Das ist derzeit einfach die verbreiteste Plattform im Web. Es wird jedoch ein paar Dinge geben, die mit 0/8/15 Hostern so nicht realisierbar sind. Als Beispiel: Es wird wahrscheinlich 4 verschiedene Datenbanknutzer geben (Admin, Autor, Nutzer_Inserts, Nutzer_Selects). Zudem wird es eine strikte Trennung zwischen Besucherbereich, Autorenbereich und Adminbereich geben, sodass alle 3 Bereiche z.B. auf verschiedenen Domains laufen können oder man z.B. den Adminbereich nach fertiger Installation komplett löschen könnte. Das ist das Hauptziel: Separation of Duties.

      P.S.: Natürlich wird man das ganze auch bei 0/8/15 Hostern nutzen (ist eines der Ziele), dann aber mit reduzierter Sicherheit. Viele Hoster bieten es nicht an, mehrere Datenbanknutzer für eine Datenbank anzulegen, die dann auch noch unterschiedliche Rechte inne haben. Leider...

  5. Und ich dachte, Du wolltest mal Deine E-Mails bearbeiten. 😀

    Aber ganz davon abgesehen, wenn Du willst, kann ich Dir ein Logo entwerfen. Bin zwar jetzt auch nicht der ultimative Photoshopdesigner, aber a bisserl krieg ich schon hin. Ich kann Dir auch vorher was mailen, wenn Du skeptisch bist. 😉

    Ob man noch ein Framework/CMS braucht!? Das kann man vorher immer schwer sagen. Ich persönlich denke nicht, denn es gibt schon sehr gute und sichere. Auf der anderen Seite - schaden kann es natürlich auch nicht.

    • Argh, dieses Schuldgefühl. >_< Erst einmal muss ich einen Namen finden, derzeit liebäugle ich ja mit "SecWCMS" => "Sec(WCMS)" = Secure, "(Se)cW(CMS)" = coltishWARE, "WCMS" = Web Content Management System.

      Ich denke schon, dass die Verwendung eines CMS sinnvoll ist. Ansonsten hat man das Problem, dass man für neue Webseiten immer und immer wieder das Rad neu erfinden muss. Das mag in Spezialfällen auch angemessen sein, aber oft ist der benötigte Funktionsumfang ähnlich. 🙂

    • Es mag im ersten Augenblick tatsächlich sehr übertrieben aussehen. Aber sieh' es mal aus der Perspektive: Jedes Mal, wenn man ein Projekt hat, benötigt man eine Webseite. Um das Erstellen der Webseite zu vereinfachen, benutzt man ein CMS. In meinem Fall ist das bisher WordPress. Doch ich bin mit WordPress nicht zufrieden. Klar, man kann es einfach erweitern. Aber das ist eben nicht mein Hauptanliegen. Es gibt noch ein paar wichtigere Dinge - allen voran Sicherheit.

      Ich habe das Glück, nicht auf "erfahrene" Plugin-Entwickler angewiesen zu sein, um ein bestimmtes Feature zu erhalten. Ich kann mir soetwas selber schreiben, wenn ich es wirklich benötige. Weiter noch: Vieles, was man bei WordPress per Plugin nachrüsten muss, sollte eigentlich bereits Teil des CMS sein. Das beginnt bei SEO oder dem Bereitstellen von XML-Sitemaps und endet bei Antispam-Features, Bruteforce-Schutz des Logins oder der ordentlichen Unterstützung von SSL (auch für den Besucherbereich, nicht nur für den Admin-Bereich).

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.