“Worf: Waffensysteme laden. Bereit? Feuer!”
Man sollte es wie Kapitän Picard machen: Bevor man wild auf alles feuert, was eine Applikation an Benutzereingaben geliefert bekommt, erstmal gründlich sondieren. Eine gehärtete Applikation ist wichtig - die meisten Entwickler nehmen dieses Thema leider immer noch auf die leichte Schulter. Warum? Meist ist es ein Mangel an Zeit und oft will kein Auftraggeber eine sichere Applikation bezahlen.
Spätestens bei Serverkaperung, Datendiebstahl oder Fakeinhalten in der Datenbank schreien alle um Hilfe. 3 Jungs aus Deutschland haben sich dem Thema auf einer englischsprachigen Website angenommen ;) Natürlich ist das Projekt international - es gibt ja nicht nur deutsche Problemfälle, was sichere Applikationen angeht. Köln scheint die sichereste Stadt zu sein: zumindest, was Web-Applikationen angeht…
Jetzt wissen wir schon mal, wer hinter PHP-IDS steckt - aber um was geht es bei der Feindabwehr eigentlich?
Die Mechanismen einer Webapplikation werden entweder über Kommandos gesteuert, die mittels HTTP übertragen werden. Hier werden URLS, GET-Parameter und POST-Inhalte verwendet, um zu übertragen. Wenn die Daten erstmal auf dem Server angekommen sind geht es los:
- Filterung mit Black- und Whitelists
- Entfernen von Steuerzeichen und Tags
- Umformatierungen
Wenn überhaupt. Oft werden die Inhalte wie folgt von der URL in die Datenbank transportiert:
$query= "SELECT * FROM `user` WHERE `name` = " . $_POST["user"];
Ups. Besonders Ups, wenn es sich um eine öffentliche Applikation und nicht etwa ein Intranet handelt (Was auch keine Entschuldigung wäre). Mit einer einfachen RegEx könnte man überprüfen, ob hier nur die typischen Zeichen für Benutzernamen übertragen wurden (_0-9A-Z).
Aber welche Stellen sollte man in einer Applikation besonders sichern? Schwierig zu beurteilen. Erst mal haben natürlich alle Bereiche Priorität, die öffentlich zugänglich sind. Aber welcher Benutzer hätte nicht gerne Admin- oder Rootrechte, wenn er an einem System angemeldet ist?

Um generell einschätzen zu können, wie es überhaupt um Hackerangriffe bestellt ist, ist der Einsatz von PHP IDS geraten: Es ist eine Art Frühwarnsystem, das einkommende Daten auswertet und in verschiedene Levels einstuft.
Was ist es nicht? Es stellt keine Filter- oder Bereinigungsmechanismen bereit. Das wäre von Applikation zu Applikation ohnehin höchst unterschiedlich zu implementieren - daher kann jeder Entwickler wie er möchte auf die PHP IDS Klassifizierung reagieren.
Das Sicherheits-Framework besteht aus 2 wesentlichen Teilen: Die Regeldatei, die entweder aus einer Datenbank oder vom Dateisystem aus einer XML-Datei geladen werden kann und der Interpreter, der die Filterdatei ausliest und die einzelnen Regeln mit den Eingangsdaten abgleicht.
Damit der Datenabgleich mit den Filtern nicht zu lange dauert, werden erst einige Trivialregeln abgeprüft: Trifft eine davon zu, wird der Abgleich abgebrochen. Beispielsweise, wenn nur Standardzeichen wie Buchstaben und Zahlen enthalten sind. Es lebe die Performance!
Auf der FAQ Seite sind zahlreiche Beispiele für die Einbindung der Bibliothek zu finden… Wenn man sich den Downloadbereich anschaut, gibt es dort neben der PHP 5 Version auch einen Port für Version 4 von PHP als Download. Plugins für Wordpress und Typo 3 sind angekündigt…


















