Von Stefan Esser, der sich in der Vergangenheit einen Namen als Sicherheitsexperte machen konnte [3] stammt das Projekt "Hardened-PHP" [4]. Die Zielsetzung dieses Patches für PHP4 und PHP5 war es, gegen in der Zend Engine auftretende Sicherheitslücken (Stack/Buffer Overflows, Off-by-one etc.) generische Schutzmechanismen zu implementieren, sowie unsichere PHP-Applikationen durch Ab- und Umschaltung bestimmter Features etwas zu entschärfen. Die volle Featureliste und Erklärung findet sich in der Dokumentation [5].
Die aktuelle Version 0.2.6 ist in einer Version für PHP 4.3.10 sowie 5.0.3 verfügbar und liegt als komprimierte Patchdatei zum Download [6] bereit. Einige Linuxdistributoren stellen auch bereits angepasste PHP-Pakete bereit, die Hardened-PHP enthalten.
Nach dem Entpacken wird der Quellenbaum von PHP mit "patch -p 1 < ../ hardened-php-4.3.10-0.2.6.patch" gepatcht und muß danach neu übersetzt werden. Hardened-PHP kennt einige Konfigurationsdirektiven, stellt aber für die meisten Anwendungen ausreichende Defaultwerte bereit, so daß es praktisch "out of the box" eingesetzt werden kann. Vorsicht ist nur für Benutzer des Zend Optimizers oder einer anderen Zend-Extension geboten: die Kompatibilität mit Hardened-PHP kann hier nicht sichergestellt werden.
Im täglichen Umgang mit dem Webserver sollte der Administrator die Hardening-Features nicht bemerken - lediglich bei einem verhinderten Angriff auf den geschützten Webserver meldet Hardened-PHP die Art des Angriffs, IP des Angreifers und die angegriffene Datei per Syslog oder dem jeweiligen SAPI-Log (meist dem Apache-Errorlog). Ähnlich denAktionen bei mod_security kann Hardened-PHP nunmehr auch Scripts beim Eintreten einer Attacke ausführen, um so z.B. den Administrator per E-Mail oder SMS zu informieren.
Der Patch für PHP steht unter der PHP License und wird von Stefan Esser kostenlos zur Verfügung gestellt. Durch die kontinuierliche Weiterentwicklung ist Hardened-PHP innerhalb kürzester Zeit zu einem empfehlenswerten Zusatz für jede PHP-Installation geworden, die weitgehend bedenkenlos eingesetzt werden kann. Es empfiehlt sich jedoch, vor dem produktiven Einsatz auf einem Testserver eventuelle Unverträglichkeiten zu eruieren und gegebenenfalls auszuräumen.