Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

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

  Alt 29. Jun 2010, 21:05
@Valle: was soll das denn heissen?

Ich geb auch noch bisserl Senf dazu, allerdings ohne mir die Muehe gemacht zu haben, den Code anzusehn. Security-Reviews gibts sind dann doch etwas aufwaendiger.
Ein paar allgemeine Kommentare kann ich dir geben:
  • Valle hat Recht wenn er dir MVC ans Herz legt. Nein, eine Template-Engine macht deinen Code nicht MVC-konform. Ja, ein MVC-Framework hilft dir. Ich empfehle Symfony 1.4 und Doctrine (ist in symfony enthalten) als Framework-Loesung. Damit sind auch die von Frederic angesprochenen Prepared Statements abgehakt.
  • index.php5 ist eine Sache die es nicht geben sollte. index.php ist schon eher richtig - FYI: es gibt nur eine unterstuetzte PHP-Version, und das ist PHP5. Hoster bei denen Dateien die Endung php5 haben muessen, damit PHP5 greift kannst du in die Tonne kloppen. Ausserdem ist .php die Standard-Erweiterung fuer PHP-Skripte. Ich aendere doch nicht meine Apache-Einstellungen (wo PHP bei Dateien mit der Endung .php greift) um ein CMS ausfuehren zu koennen. Sorry, aber is nicht.
  • @Valle: camelCase funktioniert anders. Ich empfehle uebrigens einen Blick auf die PEAR oder ZF Coding-Guidelines - diese sind akzeptierter Standard. Da stehn noch ein paar andere sinnvolle Dinge drin.
  • 777 ist toedlich. Ganz ehrlich: wenn www-data irgendwo schreiben soll, machs ueber die normalen Gruppen- und Benutzer-Berechtigungen von Linux. Es gibt keinen Grund warum der mysql-Benutzer in den Apache-Skripten rumfummeln darf oder warum Dateien gar ausfuehrbar sein sollen. 644 (Files) bzw. 755 (Directories) kombiniert mit chown und chgrp sollte dein bester Freund werden.
  • Um das functions.php-Beispiel weiterzufuehren: wenn du die Funktionen logisch in Klassen kapselst und mit nem Autoloader arbeitest dann sparst du dir das unnoetige Laden von zig Funktionen. Das Parsen der PHP-Dateien kostet naemlich ohne Opcode-Cache richtig viel Zeit. Wenn dein Code nur eine von 20 Klassen braucht, wird auch nur die geladen, und dann auch erst sobald sie benoetigt wird. Guck dir hierzu mal spl_autoload() an. Da ist uebrigens noch ein Vorteil von MVC-Frameworks: diese implementieren sowas bereits
  • Um Valle noch den Gefallen zu tun: bei der Performance-Optimierung eines grossen Ticketing-Systems haben wir uns entschlossen, ein is_preg-Flag in die Tabelle einzufuegen um so zu entscheiden ob wir per preg_match vergleichen oder per == wenn PREG nicht von Noeten ist. Das Ergebnis: der Code war nachher um den Faktor 20 (!) schneller. Muss ich noch mehr dazu sagen?

Mein ganz freundlich gemeinter Tipp: guck dir mal folgende Tutorials an: A gentle introduction to Symfony und Practical symfony (for Doctrine). Sobald du mal die Vorteile des Systems gespuert hast wirst du sie nicht mehr missen wollen (ich sag nur I18N, Test-Frameworks, Routing-Klassen, CRUD-Generation, etc. )

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat