Liest man sich an einem Freitagnachmittag auf dem Heise-Newsticker die Forenkommentare zu einer Sicherheitsmeldung einer bekannten, x-beliebigen PHP-Anwendung, könnte man meinen, dass Sicherheit und PHP nicht wirklich funktionieren. Dass dies nicht so sein muss, beweisen Christopher Kunz und Stefan Esser nun schon in der dritten überarbeiteten Auflage ihres Buchs "PHP-Sicherheit". Um es vorweg zu nehmen: Das Buch richtet sich nicht an Anfänger, die sind sicherlich mit der Masse an Fachbegriffen, Konfigurationsmöglichkeiten und den beschriebenen Angriffsszenarien überfordert. Auch für die Käufer der zweiten Auflage ändert sich bis auf die Fehlerkorrekturen und einige kleinere Überarbeitungen nicht viel. Ein Blick ist aber auch für sie auf alle Fälle sehr sinnvoll, war die zweite Auflage doch schon seit einiger Zeit ausverkauft. Überarbeitet wurden vor allem die Kapitel zu Suhosin und Authentisierung und Authentifizierung.
Das Buch beginnt mit einer kurzen Einführung zum Thema Sicherheit und auch der klaren Aussage der Autoren, dass eine hundertprozentige Sicherheit niemals möglich sei. Sie zeigen aber gleich zu Beginn, wie man die Risiken durch schnelle Informationsbeschaffung über Mailinglisten (wie Full Disclosure oder Bugtraq) vermindern kann. Anschließend wird neben dem schnellen Versorgen mit Informationen auch die Gewinnung von Wissen über die Anwendung erörtert. Hierzu wird auf alle Aspekte wie Webserver, Betriebssystem und die verwendete PHP-Version eingegangen. Auch werden unglückliche Fehler wie eine öffentlich erreichbare phpinfo()-Seite oder alte Dateileichen nicht vergessen. Weiterhin beschreiben die beiden Autoren die Parametermanipulation und geben zunächst Grundlageninformationen zum Thema. Sie beschreiben hierzu verschiedene Angriffsvektoren und geben zu allen Bereichen Lösungen zur Prävention. Die allseits bekannten Cross-Site-Scripting-Attacken (XSS) bekommen ebenfalls ein eigenes Kapitel spendiert. Kunz und Esser gehen dabei auf die verschiedenen Gefahren und nicht gleich ersichtlichen Probleme in diesem Thema ein und vergessen dabei auch das Cross-Site Request Forgery (CSRF) nicht. In einem ebenfalls eigenen Kapitel widmen sich die Autoren dem Thema SQL Injection, das aber relativ kurz gehalten wird, da man sich über Parameter-Binding und Stored Procedures recht effektiv schützen kann. Im anschließenden Kapitel geht es um Authentisierung und Authentifizierung und wie deren Sicherheit gewährleistet werden kann. Dabei vergessen die Autoren nicht das Thema CAPTCHA und verheimlichen auch nicht, dass CPATCHAs überwindbar sind. In zwei folgenden Kapiteln werden Sessions und Upload-Formulare beschrieben. Beide Kapitel sind recht knapp, aber dafür auch direkt mit den nötigen Informationen zum Schutz ausgestattet.
Die nächsten Kapitel gehen auf die Internas von PHP selbst ein. Dabei wird die seit PHP 5.2 fest integrierte Variablenfilterung mit der filter-Extension beschrieben und auch auf die Möglichkeiten und Probleme bei der Absicherung von PHP selbst eingegangen. Diese Bereiche sind dabei eher für Administratoren interessant, aber auch für jeden Entwickler sollten sie eine gute Wissensgrundlage bereitstellen. Die beiden letzten Kapitel beschreiben Suhosin bzw. den Hardened PHP Patch und die direkten Filtermöglichkeiten im Apache-Webserver.
Das Buch kann ausnahmslos jedem erfahrenen PHP-Entwickler, aber auch Administratoren für LAMP-Systeme empfohlen werden und gehört sicherlich – neben dem PHP Manual und der MySQL-Dokumentation – zu der Grundausstattung eines jeden professionellen PHP-Entwicklers.

















