Buchvorstellung: PHP Sicherheit
Ein weiteres Werk von meinem Berg ist durchgearbeitet: Das 333 Seiten starke Standard-Werk zu „PHP Sicherheit“ von Christopher Kunz und Security-Guru Stefan Esser, den viele wahrscheinlich von seinem „Month of PHP Bugs“ oder der PHP-Erweiterung Suhosin kennen. Vor mir liegt die 3. Auflage aus dem Jahr 2008, und ich kann auch schon mal vorweg nehmen, dass die Themen heute noch brandaktuell sind und wahrscheinlich durch 5.3 keine gravierenden neuen Tipps dazugekommen wären.
Was erwartet man bei einem solchen Titel? Eine Liste von PHP-Core-Sicherheitslücken, Hinweise wie „vertraue keinen Usereingaben“, oder Aussagen „PHP ist garnicht so unsicher wenn man es richtig benutzt“? Ja, unter anderem, und noch viel mehr.
Das Inhaltsverzeichnis liest sich wie eine Offenbarung, wirklich alle wichtigen Schlagwörter sind vertreten und machen Lust auf Details. Zuerst gehen die Autoren auf allgemeine Sicherheitsprinzipien ein, helfen dabei wie man seinem Chef erklärt warum Sicherheit viel wert ist und Zeit sowie Geld kosten darf (und muss!). Wichtige Mailinglisten wie Full Disclosure und BugTraq werden genannt, um immer auf dem Laufenden zu sein.
Im zweiten Kapitel werden Methoden aufgezeigt, wie Angreifer Informationen über Webserver, Datenbankversionen, PHP-Versionen und -Erweiterungen, verwendete Software, Pfade usw. sammeln und ausnutzen. Im darauf folgenden Kapitel werden Möglichkeiten erläutert, wie Angreifer $_GET, $_POST, $_COOKIE und sogar $_SERVER Variablen manipulieren, um Angriffe wie „HTTP Response Splitting“, „Remote Command Execution“, „Cookie Poisioning“, „Mail-Header-Manipulation“ und vieles mehr durchführen können. Natürlich werden auch Lösungen präsentiert.
(Quelle: http://projects.webappsec.org/Web-Application-Security-Statistics#Summary)
Ein ganzes Kapitel beschäftigt sich dann mit dem Web-Sicherheitsproblem Nummer 1: Cross-Site Scripting (CSS/XSS) inklusive dem Thema „Cross-Site Request Forgery“, sowie der Nummer 3: SQL Injection. Das nächste Kapitel beschäftigt sich mit Authentisierung/Authentifizierung. Ein weiteres Kapitel umfasst das Thema Session (also u.a. Session Bruteforcing, Hijacking, Fixation). Jeweils gibt es auch Anleitungen, wie man diese Gefahren abwehrt.
Dann beginnen die Kapitel, die sich mit grundsätzlichen Lösungen zur Härtung der Installation beschäftigen: die PHP-Extension ext/filter wird erläutert, suExec, der Safe-Mode, open_basedir, Code-Sandboxing mit runkit, mod_chroot und vielen vielen Einstellungen und Modulen mehr.
Das Kapitel 11 beschäftigt sich, man hätte es fast vermisst, mit Suhosin. Installation, Konfiguration und Nutzen werden umfassend erläutert. Das letzte Kapitel bilden die Filtermodule mod_security und mod_parmguard. Doch das Buch ist noch nicht am Ende, im Anhang befinden sich noch Checklisten zu sicheren Webapplikationen, die wichtigen Optionen der php.ini zusammengefasst sowie die Liste aller aktuellen Gefahren, denen man sich stellt im Internet.
Tja, was soll ich sagen, es ging durch wie Butter. Die Grundlagen sind natürlich extrem wichtig, um die Auswirkungen zu verstehen und das Vorhandensein der Lücken in der eigenen Software prüfen zu können. Ich wette, dass dem ein oder anderen Leser beim Durcharbeiten der Satz „Oha, meine Anwendung ist dagegen anfällig“ durch den Kopf geht. Interessant finde ich aber auch die Checkliste, die jeder PHP-Programmierer (eigentlich jeder Webentwickler) bei einem (Re)Launch durchgehen sollte, solch eine Liste fehlt einfach, um sie methodisch Punkt für Punkt durchgehen zu können.
Voraussetzung zum Verständnis ist natürlich ein gewisses Vorwissen im PHP-Bereich sowie ein selbst installierter Webserver, ohne ein paar Grundlagen in den Bereichen versteht man die Auswirkungen von vielen Dingen wahrscheinlich nicht. Dieses Grundlagenbuch sollte jeder gelesen haben, wenn dann noch alle gewissenhaft die Lösungen befolgen wäre das Web um vieles sicherer. Ich überlege gerade, was ich zu meckern hätte… aber mir fällt nichts ein. Keine Rechtschreibfehler, praxisnahe Beispiele, Vollständigkeit. Bin sprachlos.
Pflichtlektüre!
Ich habe das Buch auch gerade gelesen und kann auch nur positives dazu sagen. Wenn man etwas negatives finden will, dann eventuell das Kapitel über den SafeMode, der ja mittlerweile deprecated ist und im Buch zur Aktivierung empfohlen wird.
Udo
29 Mrz 10 at 08:59
Das klingt gut,kommt auf die Todo Liste .danke
Arne
29 Mrz 10 at 09:14
Klingt interessant, muss ich mir wohl auch mal beschaffen.
Ralph Meier
29 Mrz 10 at 09:33
Das klingt aber mal wirklich vielversprechend!
Vielen Dank für die Rezension. Ich geh dann mal kaufen. 🙂
Christian
30 Mrz 10 at 09:54
Hm, da wir ja eh alle die gleichen Bücher kaufen, könnten wir sie auch untereinander austauschen 🙂
Ralph Meier
30 Mrz 10 at 10:42
Keine allzu schlechte Idee. Dann liste mal deine auf, ich ziehe heut Abend nach wenn ich zuhause bin.
Michael Kliewe
30 Mrz 10 at 10:49
Hier meine Liste, mal sehen welche ich davon noch vorstellen werde (erstmal muss ich sie noch lesen, wobei einige davon evtl. nichts interessantes neues mehr für mich bieten):
PHP Design Patterns
PHP Sicherheit
Besser PHP programmieren
Sichere Webanwendungen mit PHP
AJAX und PHP
PHP 5.3 & MySQL 5.1
Postfix – Einrichtung, Betrieb, Wartung
Das sind wahrscheinlich die interessantesten für den Webbereich.
Michael Kliewe
31 Mrz 10 at 08:36
Wie man auch an meinem Blog erkennt, programmiere ich zwar hauptsächlich in PHP, mein Interesse gilt aber eher, wie man richtig programmiert und nicht sprachspezifischer Dinge. Daher haben meine Bücher nicht sooo viel mit PHP zu tun. Vielleicht sind meine Bücher aber trotzdem lesenswert 🙂
– PHP Design Patterns
– Clean Code
– Code Complete
– Test Driven Development
– Continuous Integration
– Refactoring
Auf meiner Wunschliste:
– Arbeiten mit Legacy Code (schon Vorbestellt)
– PHP Sicherheit
– Pragmatische IT Architektur
– Der pragmatische Programmierer
– PHPUnit kurz und gut
Ralph Meier
31 Mrz 10 at 10:13