Einzelnen Beitrag anzeigen

Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#3

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 21:27
Hallo,

ich hoffe du hast nichts dagegen, wenn ich dein CMS mal etwas genauer auseinander nehme, nicht nur bezüglich Sicherheit.
  • das gesamte Konzept deines CMS ist leider völlig veraltete Technik und alles andere als flexibel, tut mir Leid. Du wirst mit Sicherheit Probleme damit bekommen, wenn du das intensiver benutzen willst. MVC sollte das sein, was du suchst,
  • Du verwendest globale Variablen und einige Konstanten ($Config oder R_GUEST), was wie auch in Delphi nicht gerade die feine englische Art ist.
  • es sind einige Rechtschreib- oder Tippfehler zu finden. Main_Fialize() oder $_SESSION['Activ'].
  • du mixt sehr extrem Groß- und Kleinschreibung. Das ist nicht hilfreich für Leute, die sich mit deiner API beschäftigen wollen. In den meisten Fällen hat sich ein "allesklein" für Variablen und Funktionen bewährt. Lediglich Klassen (dazu gleich mehr) schreibt man meistens in Camel_Case.
  • eine functions.php ist keine gute Idee. Mag sein, dass die Ladegeschwindigkeit erhöht wird, weil alles in einer Datei steht, aber Versionierung, logische Trennung oder einfach nur Übersicht leiden schwer darunter.
  • soweit ich dein CMS verstanden habe, muss man für jede neue Seite eine neue Datei anlegen und diese mit Kopf- und Fußzeilen ausstatten. Das artet in vielen Hacks und unnötigem Copy and Paste aus. Und wehe es ändert sich mal was ...
  • Die wesentlichen Config-Einträge wie MySQL-Zugangsdaten stehen in Zeile 2090! Findest du nicht, dass derartig relevante Sachen eine eigene Datei verdient haben?
  • es ist schön, dass du deinen Code (bzw die API) so einigermasen dokumentierst, aber mittlerweile gibt es sehr schöne inline-Dokumentationssysteme (phpDoc!), welche teilweise schon von Editoren unterstützt werden und wesentlich lesbarer und geläufiger (folglich einfacher) sind.
  • du magst preg_match, oder? *g* Ein CMS sollte das möglichst vermeiden, denn es ist nicht gerade das Schnellste. Es gibt viele Stellen in deinem Code, die ein derartiges Monster an Funktionskraft gar nicht benötigen. Hier streiten sich viele (alcaeus wird gleich wieder kommen ... ^^), aber soweit ist das jedenfalls meine Meinung.
  • Funtions.php5, Zeile 284; fummle doch bitte nich an den Dateirechten rum. 0777 ist ein böses Gerücht, völlig sinnlos und nicht Aufgabe des Script. Der Administrator selbst hat dafür zu sorgen, das Dateien die Rechte haben, die sie haben sollen. 0777 steht für Lese-Schreib- und Ausführrechte für jeden. Wozu muss ein Script ausgeführt werden (die werden interpretiert) und warum haben Andere Lese- und Schreibrechte darauf?
  • und in Anbetracht dessen müsste man noch sagen, dass dein CMS wahrscheinlich nicht Windows-Server kompatibel ist (siehe Pfadnamen und diese chmods).
  • bzgl. der Sicherheit ist mir sonst noch nichts aufgefallen. Mir fällt es schwer, relevante Stellen zu finden, denn was die Verzeichnisstruktur angeht, hast du dein Projekt sehr klein gehalten.

Was ich dir noch so als kleine Anregungen sagen möchte: Schau dir doch mal MVC an. Wenn man das geschickt umsetzt, hat man eine unglaubliche Flexibilität. OOP ist leider gar nicht verwendet worden, was dank PHPs Funktionsumfang sicher Spaß gemacht hätte. Dann wäre auch ein gutes URL-Management eine sinnvolle Sache. Lieber sollte man per htaccess immer die index.php aufrufen, die dann anhand der URL die richtige Seite includet. Und letztendlich werf ich mal noch den Begriff "Autoloader" in die Runde. Kapselt man alle Funktionalitäten in Klassen, so ist ein Autoloader eine feine Sache.

Ansonsten hast du dir sicher viel Mühe gegeben und eine Menge Arbeit da rein gesteckt. Du hast viel abstrakt gehalten und dich auf die Zukunft vorbereitet. Funktionieren wird das alles sicherlich, aber Spaß macht es später eher keinen mehr. PHP kann toller sein.

Wenn du noch Fragen zu den einzelnen Listenpunkten hast, dann nur her damit. Ich kann da gerne einiges genauer erläutern.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat