Mein Variomedia

Hier können Sie sich im Kundenmenü einloggen.




Passwort vergessen?

Weitere Logins

Sie befinden sich hier: variomedia.de > Support > Häufige Fragen (FAQ) > Webanwendungen und Datenbanken > PHP

Fragen und Antworten

Wie kann ich PHP gegen Hackerangriffe absichern?

Sicherheitslücken in PHP-Anwendungen ermöglichen es Hackern häufig, eigene PHP-Scripte auf dem Webserver zu hinterlegen, oder direkt eigenen PHP-Code auszuführen. Um den möglichen Schaden zu begrenzen, kann es hilfreich sein, bestimmte kritische PHP-Funktionen wie das Ausführen von Shell-Befehlen über eine PHP-Konfigurationsdatei mittels der Direktive "disable_functions" zu deaktivieren.

Hinweis: Beachten Sie bitte, dass manche PHP-Anwendungen dadurch eventuell nicht mehr korrekt funktionieren.

Zunächst muss sichergestellt werden, dass der Zugriff auf die PHP-Konfigurationsdatei durch PHP selbst nicht möglich ist, denn sonst könnten Hacker diese Konfigurationsdatei nach belieben verändern. Dazu dürfen Ihre Webseiten nicht direkt in Ihrem Webserver-Benutzerverzeichnis abgelegt werden, sondern in einem eigenen Unterverzeichnis. PHP lässt sich dann mittels der Direktive "open_basedir" so konfigurieren, dass nur auf Dateien in diesem Unterverzeichnis (sowie auf temporäre Dateien im Verzeichnis "/tmp/") zugegriffen werden darf.

Hinweis: Beachten Sie bitte, dass open_basedir zu einer Verlangsamung der Ausführung von PHP-Scripten führen kann.

Einzelne PHP-Anwendung absichern
Zur Veranschaulichung der genauen Vorgehensweise soll im folgenden Beispiel der Zugriff auf eine einzelne WordPress-Installation des Webserver-Benutzers "u12345" im Webserver-Verzeichnis "wordpress" abgesichert werden. Hierzu wird zunächst die PHP-Konfigurationsdatei mit Namen "php.ini" und folgendem Inhalt erstellt:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source
open_basedir = /homepages/u12345/wordpress/:/tmp/

Um diese Konfigurationsdatei für alle Unterverzeichnisse im Webspace zu aktivieren, wird zusätzliche eine Webserver-Konfigurationsdatei mit Namen ".htaccess" und folgendem Inhalt benötigt:
RemoveHandler .cgi .pl .py
SetEnv PHPRC=/homepages/u12345/php.ini

Die erste Zeile der Datei deaktiviert das Ausführen von Perl- und Python-Scripten durch den Webserver, dadurch können nur noch PHP-Scripte genutzt werden. Dies soll verhindern, dass Hacker eigene Perl- oder Python-Scripte ausführen. Falls Sie Perl bzw. Python nutzen möchten, müssen Sie diese Zeile entsprechend anpassen oder ggf. weglassen.
Beide Dateien werden dann direkt im Webserver-Benutzerverzeichnis abgelegt. Wenn Sie dieses Beispiel übernehmen möchten, müssen Sie die Benutzerkennung sowie die Verzeichnisnamen entsprechend anpassen.

Mehrere PHP-Anwendungen mit eigenen Domains absichern
Falls Sie in Ihrem Webspace mehrere PHP-Anwendungen unter jeweils eigenen Domains in unterschiedlichen Webserver-Verzeichnissen installiert haben, ist es aus Sicherheitsgründen oft sinnvoll, den Dateizugriff aus PHP heraus auf da jeweilige Webserver-Verzeichnis der Domain zu beschränken. So können bei Sicherheitslücken in einer PHP-Anwendung nicht sämtliche anderen Anwendungen ebenfalls gehackt werden.
Im folgenden Beispiel soll unter der Benutzerkennung "u12345" ein WordPress mit der Domain "wordress.meine-domain.de" im Webserver-Verzeichnis "wordpress" und ein Joomla mit der Domain "joomla.meine-domain.de" im Webserver-Verzeichnis "joomla" abgesichert werden.
Zunächst wird die PHP-Konfigurationsdatei für WordPress mit Namen "wordpress-php.ini" erstellt:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source
open_basedir = /homepages/u12345/wordpress/:/tmp/

Dann wird die PHP-Konfigurationsdatei für Joomla mit Namen "joomla-php.ini" erstellt:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source
open_basedir = /homepages/u12345/joomla/:/tmp/

Um die php.ini-Dateien für das jeweilige Unterverzeichnis zu aktivieren, wird noch eine .htaccess-Datei mit folgendem Inhalt benötigt:
RemoveHandler .cgi .pl .py
SetEnvIfNoCase Host "^(www\.)?wordpress\.meine-domain\.de$" PHPRC=/homepages/u12345/wordpress-php.ini
SetEnvIfNoCase Host "^(www\.)?joomla\.meine-domain\.de$" PHPRC=/homepages/u12345/joomla-php.ini

Die erste Zeile der Datei deaktiviert das Ausführen von Perl- und Python-Scripten durch den Webserver, dadurch können nur noch PHP-Scripte genutzt werden. Dies soll verhindern, dass Hacker eigene Perl- oder Python-Scripte ausführen. Falls Sie Perl bzw. Python nutzen möchten, müssen Sie diese Zeile entsprechend anpassen oder ggf. weglassen. In den folgenden Zeilen wird den einzelnen Domains die passende php.ini-Datei zugewiesen.
Die Konfigurationsdateien werden wieder direkt im Webserver-Benutzerverzeichnis abgelegt.
Wenn Sie dieses Beispiel übernehmen möchten, müssen Sie die Benutzerkennung, Datei- und Verzeichnisnamen entsprechend anpassen. Weiterhin müssen Sie für alle Domains passende SetEnvIfNoCase-Einträge in der .htaccess-Datei vornehmen.


Joomla
Manipulation
PHP
WordPress