76402

PHP-Sicherheit für Programmierer und Admins

18.07.2008 | 11:59 Uhr |

PHP-Skripte sind schnell programmiert und eine MySQL-Datenbank ist ebenfalls ruckzuck aufgesetzt. Doch ohne umfangreiche und geeignete Sicherungsmaßnahmen steht so ein LAMP-System Hackerangriffen fast wehrlos gegenüber. Das macht die Lektüre spezieller Fachliteratur zur Pflichtaufgabe jedes Programmierers und Server- beziehungsweise Datenbankadministrators. Das Buch "PHP-Sicherheit" aus dem dpunkt-Verlag ist so eine Pflichtlektüre und eine sehr gute obendrein. Die PC-WELT stellt Ihnen dieses Buch vor.

Das Buch "PHP-Sicherheit. PHP/MySQL-Webanwendungen sicher programmieren" ( 3. Auflage, überarbeitete Auflage, Juni 2008 ISBN 978-3-89864-535-5, 36 Euro (D) / 37,1 Euro (A)/ 62 sFr, Dpunkt-Verlag, www.dpunkt.de ) von Christopher Kunz und Stefan Esser wurde für die vor kurzem erschienene 3. Auflage überarbeitet und an einigen Stellen umstrukturiert. Auf rund 330 Seiten (die Verlagsangabe mit 351 Seiten ist etwas übertrieben) behandeln die beiden Autoren (Peter Prochaska wird anders als bei der 2. Auflage nicht mehr als Autor genannt) so ziemlich alle denkbaren Sicherheitsaspekte, die mit der PHP-Programmierung und der MySQL-Datenbank zusammenhängen.

Das Buch richtet sich an erfahrene PHP-Programmierer und setzt gründliche Vorkenntnisse von PHP und MySQL sowie bei Apache voraus. Für Anfänger ist es somit ungeeignet, sie dürften von der Fülle von Fachbegriffen, Sicherheitsaspekten und Konfigurationsmöglichkeiten förmlich erschlagen und damit abschreckt werden. PHP-Programmierer, Datenbankadministratioren und Serveradmins liegen dagegen absolut richtig mit "PHP-Sicherheit".

Nach dem Motto "man muss den Feind und seine Methoden kennen" gehen die Autoren durchwegs in dem Buch vor. Sie stellen nach Themengruppen sortiert Schwachstellen in der jeweiligen Technologie (beispielsweise Formularbehandlung oder Datenbankverbindungen) und die darauf beruhenden Angriffstechniken vor und liefern danach ausführlich die programmierspezifischen Abwehrtechniken beziehungsweise konkrete Schutztools wie beispielsweise Suhosin nach. Aber auch kleine aber feine Browser-Addons wie zum Beispiel Http Live Headers werden vorgestellt - mit den geeigneten Erweiterungen lässt sich nämlich Firefox zu einem für Webmaster wie Hacker gleichermaßen interessanten Werkzeug aufrüsten . In diesem Zusammenhang wird natürlich auch der unvermeidliche Portscanner Nmap erwähnt.

Den Anfang macht aber eine Vorstellung wichtiger Mailinglisten und Informationsseiten zum Thema Sicherheit. Nichts ist bei diesem Thema so wichtig wie Schnelligkeit und so versuchen die Autoren gar nicht erst den Eindruck zu erwecken, ihr Buch sei das allein selig machende Heilmittel gegen Hackerangriffe. Stattdessen betonen Kunz/Esser wie wichtig es ist, sich täglich einen Überblick über die Entwicklung an der Sicherheitsfront zu verschaffen.

Nach diesem Aufwärmkapitel zu Mailinglisten und sicherheitsrelevanten Websites geht es dann richtig zur Sache. Wie bekommt ein Angreifer heraus, mit welchem Webserver er es bei einem potenziellen Opfer zu tun hat? Welches Serverbetriebssystem liegt dem zu Grunde? Kommt PHP als Skriptsprache zum Einsatz oder handelt es sich vielleicht doch um ein ASP.net-System? Und welche Datenbank beherbergt die Kundendaten? Diese und verwandte Fragen erklärt das Autorengespann ausführlich und liefert natürlich sofort die nötigen Tipps mit, wie man es dem Angreifer so schwer wie nur möglich machen kann, um an diese für seine Angriffstechnik unverzichtbaren Informationen heranzukommen (nur ein Stichwort: Serverbanner tarnen).

Dabei werden nicht nur knifflige Techniken angesprochen sondern auch trivial erscheinende aber eben in der Praxis durchaus vorkommende Unterlassungssünden erwähnt. Beispielsweise die vergessene phpinfo-Datei, die der Entwickler einst zu Testzwecken auf den Server hochlud und dort vergessen hat. Und die nun dem Hacker wichtige Informationen über die konkrete PHP- und MySQL-Konfiguration frei Haus liefert. Oder vergessene ältere Versionen von PHP-Dateien, die noch nicht optimal gegen unerwünschten Zugriff abgesichert sind und vielleicht zusätzliche Kommentarzeilen mit wichtigen technischen Detailinformationen enthalten. Sie zu finden, lässt das Herz eines jeden Angreifers schneller schlagen. Ebenfalls wichtig in diesem Zusammenhang sind defaultmäßige Einstellungen für Standarduser wie sie nach der Installation einer neuen Software vorliegen. Man denke hier nur an die nicht durch ein Passwort geschützten Standard-User bei MySQL.

Ein wichtiges Thema ist die Parametermanipulation. Dementsprechend ausführlich behandeln die beiden Autoren diesen Sicherheitsaspekt, der bei einer schwach typisierten Sprache wie PHP noch besondere Brisanz bekommt. Sie erklären genau, unter welchen Gesichtspunkten und mit welchen Möglichkeiten Parameter und Eingaben von Nutzern auf ihre Plausibilität geprüft werden müssen, um das Einschleusen von unerwünschten Code zu verhindern. In diesem Zusammenhang lernt der Leser dann auch gängige und weniger gängige Angriffs- und Manipulationsmöglichkeiten wie Cookie Poisoning, Remote Command Execution oder eben das Verändern von Formulardaten kennen. Dabei erwähnen die Autoren natürlich auch einen Klassiker zum Thema Sicherheit und PHP, nämlich register_globals.

Mit Cross-Site-Scripting (XSS) wird dann ein mittlerweile weit verbreitetes Angriffsszenario behandelt. Die Schutzmechanismen, die hierzu vorgestellt werden (zum Beispiel hmlspecialchars(), htmlentities(), strip_tags()), sollten jedem PHP-Programmierer bekannt sein, doch oft werden sie in der Hektik eines schnell geschriebenen Skripts vergessen oder nur unzureichend eingesetzt. Ausführlich gehen die beiden Sicherheitsexperten auch auf die Vorteile und Nachteile von Whitelists und Blacklists ein – wie so oft muss man hier abwägen zwischen Komfort und Sicherheit.

Neben dem bekannten XSS wird aber auch das weniger bekannte Cross-Site Request Forgery vorgestellt. Danach geht es mit aller gebotenen Sorgfalt weiter zu vermutlich dem Alptraum eines jeden MySQL-Datenbankadministrators: SQL-Injection ist angesagt. Auch hier werden wieder die Angriffsmöglichkeiten und danach die Schutzmechanismen vorgestellt, wobei sich die Autoren voll auf der Höhe der Zeit zeigen und beispielsweise neben dem bekannten mysql_escape_ auch Parameter-Binding/prepared Statements vorstellen (in vielen Einsteigerbüchern zur PHP-Programmierung wird das Paramater-Binding bis heute nicht erwähnt).

Danach wird die Authentisierung/Authentifizierung behandelt. Den Captchas als Schutzinstrument gegen Spam ist ein eigener Abschnitt gewidmet, der lobenswerterweise auch die Tatsache nicht verschweigt, dass sich Captchas mittlerweile knacken lassen. Danach folgt mit "Sessions" ein Thema, das ganz besonders für die Betreiber von Online-Shops wichtig ist.

Ob man PHP als Apache-Modul oder als CGI-Variante einbinden sollte, wird im weiteren Verlauf ebenfalls diskutiert. Für Serveradministratoren ist das ein wichtiger Aspekt. Danach werden alle sicherheitsrelevanten PHP-Einstellungen behandelt, anschließend geht es weiter zum Thema "PHP-Hardening". In diesem Zusammenhang wird das mittlerweile recht bekannte Suhosin vorgestellt (Stefan Esser beschäftigt sich stark mit dieser Sicherheits-Technik), mit dem sich PHP-Installationen besonders absichern lassen und zum Schluss geht das Autoren-Duo noch auf Webserverfilter für Apache ein. In diesem Zusammenhang sollte noch erwähnt werden, dass in dem Buch grundsätzlich auch der Internet Information Services IIS von Microsoft behandelt wird. Da aber Apache nun einmal der typische Webserver für PHP/Mysql im professionellen Einsatz ist, liegt der Fokus des Buches eindeutig auf LAMP-Systemen. Wer den IIS als Webserver für ein Unternehmen einsetzt, dürfte sich programmiertechnisch in der Regel für eine ASP.net-Lösung und dem Windows Server als Plattform entscheiden.

Das Buch wird abgerundet durch eine knappe aber wertvolle Checkliste für sichere Webapplikationen und einer Liste der Schwachstellen mit Gefahrenpotenzial-Bewertung.

Fazit: Das Buch ist eine unverzichtbare Pflichtlektüre für alle, die sich mit PHP, MySQL und Apache beschäftigen. Vieles, was bei Kunz/Esser steht, ist zwar bekannt und auch an anderer Stelle nachzulesen, die beiden Autoren verraten also keine bisher unenthüllten Geheimnisse. Doch so übersichtlich zusammengestellt, umfassend und verständlich erklärt und in den Gesamtkontext passend eingeordnet wie hier wird das Thema PHP-Sicherheit kaum anderswo behandelt. Mit einem Buch hat man alle derzeit denkbaren Angriffsstechniken und -Szenarien und -Schwachstellenbeschreibung zur Hand - das ist die Stärke dieses spezialisierten Werkes, dessen Preis von 36 Euro wirklich gut angelegt ist.

Ganz besonders wenn man sich die Folgen eines erfolgreichen Hackerangriffs ansieht: Ein Unternehmen verliert dadurch nicht nur Kundendaten und erleidet finanzielle Einbußen. Viel schlimmer dürfte oft noch der Imageschaden sein, der zum Untergang einer Firma führen kann, wenn sich die verunsicherten Kunden von einem Unternehmen abwenden. Von den rechtlichen Folgen wie möglichen Schadensersatzansprüchen ganz zu schweigen. Systemadministratoren gibt das Buch zudem Argumentationsmittel in die Hand, um übertrieben knausrige, BWL-gesteuerte Geschäftsführer davon zu überzeugen, dass es sich lohnt, in die Sicherheit zu investieren.

Das Buch ersetzt aber keinesfalls den täglichen Blick in die auf Sicherheitsfragen spezialisierten Mailinglisten. Zudem bleiben einige Aspekte wie beispielsweise die Härtung eines Linuxsystems bewusst ausgespart - hier ist also weitere Literatur gefragt.

0 Kommentare zu diesem Artikel
76402