Sie befinden sich hier:
» 
» 
11.12.2010

Sichere php.ini Einstellungen

Kategorie(n): Web-Sicherheit

Es können viele Konfigurationseinstellungen in der php.ini vorgenommen werden, um PHP sicher zu betreiben. Eine absolute Sicherheit wird es aber nicht geben. Mehr Sicherheit bedeutet teilweise eine Einschränkung der Funktionalität. Hier werden Ihnen die wichtigen Parameter und deren Bedeutung kurz vorgestellt. Deren korrekte Einstellung ist unbedingt zu empfehlen. Des Weiteren sollten sie darauf achten, auch nur die Extensions zu aktivieren, die Sie wirklich in Ihren Programmen benötigen.

Grundeinstellungen

register_globals = Off
GET und POST-Variablen werden nicht global verfügbar gemacht. Somit können nicht die Inhalte von z.B. POST-Variablen mit gleichnamigen GET-Variablen überschrieben werden. Es muss sich im Script explizit auf die Variablen der Arrays $_GET, $_POST, $_COOKIE, $_ENV bezogen werden. Hierdurch entsteht zwar ein höherer Programmieraufwand, aber auch ein Gewinn an Sicherheit.

register_argc_argv = Off
Legt fest, ob die argv- und argc-Variablen deklariert werden sollen (kommt auf Kommandozeilenebene zum Einsatz).

allow_url_fopen = Off
Bei der Einstellung OFF ist es nicht möglich, mit fopen() entfernte Dateien zu öffnen.

allow_url_include = Off
Bei der Einstellung OFF ist es nicht möglich, mit include(), include_once(), require(), require_once() entfernte Dateien zu öffnen.

magic_quotes_gpc = Off
Wenn diese Option eingeschalten ist, werden sowohl alle einfachen und doppelten Hochkommas, als auch der Backslash (\) in allen GET, POST und COOKIE-Variablen maskiert. Um Code-Injection zu vermeiden, ist diese Option auszuschalten.

Verarbeitung

file_uploads = Off
Wenn kein File-Upload benötigt wird, sollte die entspr. Funktionalität deaktiviert werden.

upload_max_filesize = 20M
Wenn man aber File-Upload benötigt, sollte die maximale Filegröße auf das zu erwartende Maß beschränkt werden.

memory_limit = 32M
Beschränkung des Speichers, welcher PHP für die Ausführung von Scripten zur Verfügung steht.

post_max_size = 20M
Die max. Größe der per POST gesendeten Daten sollte auf ein vernünftiges Maß begrenzt werden.

safe_mode = On (ab PHP 5.3 veraltet)
Durch diese Option sollten Sicherheitsprobleme in der PHP-Schicht gelöst werden, die durch das darunterliegende Betriebssystem nicht gelöst wurden. Bei aktiviertem safe-Mode, werden Prüfungen durchgeführt, ob ein User z.B. berechtigt ist, die gewünschte Aktion auszuführen bzw. auf ein File zuzugreifen.

Fehlerbehandlung

display_errors = Off
Fehler sollten niemals am Bildschirm ausgegeben werden (außer während der Entwicklungsphase). Jede Ausgabe würde einem Angreifer Informationen über mögliche Angriffspunkte liefern.

error_reporting=E_ALL
Trotzdem sollten alle auftretenden Fehler, Notizen und Warnungen protokolliert werden, um Programmfehler besser lokalisieren und evtl. Angriffe leichter erkennen zu können.

log_errors = On
error_log = /pfad/php-error.log

Die Fehler sollten möglichst in eine Log-Datei geschrieben werden.
Alternativ hierzu kann man sich um die debug_backtrace-Funktion ein Script erstellen, dass jegliche Fehlermeldungen sofort per Email an den Entwickler sendet.

Sonstiges

disable_functions = phpinfo, print_r, var_dump, var_export, exec, system, passthru, shell_exec, popen, escapeshellcmd
Funktionen, die Informationen über das System liefern, Variableninhalte ausgeben können oder Systembefehle absetzen können, sollten deaktiviert werden, sofern sie nicht explizit benötigt werden.
Die Auflistung hier ist als Empfehlung zu betrachten.

expose_php = Off
Die Verfügbarkeit von PHP auf dem Server wird nicht im Header oder der Serversignatur angezeigt. Somit wird Angreifern nicht bereits Versionsnummer etc. geliefert.

open_basedir ="D:\Inetpub\;D:\php\uploadtmp"
Hiermit wird die Ausführung von php-Code auf die angegebenen Verzeichnisse und deren Unterverzeichnisse beschränkt.

Autor: Mein Name ist Harry Kämpf und ich bin seit vielen Jahren als Projekt Manager im Webumfeld tätig. Auf diesen Erfahrungen basieren die Tipps zur Webseitengestaltung. Ich schreibe gern über Webthemen, nehme aktuelle Trends auf und gebe bei Bedarf kompetente Beratung. Mehr Infos können Sie auf ueber-mich.html nachlesen.

8