Die Direktive disable_functions ist eine Einstellung in der PHP-Konfigurationsdatei (php.ini), die für die Serversicherheit von entscheidender Bedeutung ist. Diese Einstellung ermöglicht es, die Ausführung bestimmter PHP-Funktionen zu verhindern, wodurch verhindert wird, dass potenziell schädliche Skripte das System beschädigen.
Der unten als Beispiel angegebene Wert für disable_functions ist sehr umfassend und deaktiviert viele kritische Funktionen:
disable_functions = hopenbasedir, system, cat, proc_nice, show_source, posix_mkfifo, mysql_list_dbs, get_current_user, getmyuid, pconnect, link, symlink, pcntl_exec, ini_alter, leak, apache_setenv, posix_kill, posix_setpgid, posix_setsid, posix_setuid, proc_terminate, syslog, socket_select, socket_create, socket_create_listen, socket_create_pair, socket_listen, socket_accept, socket_bind, socket_strerror, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, openlog, apache_get_modules, apache_get_version, apache_getenv, apache_note, virtual, user_dir, ini_restore, mail, phpmail, sendmail, passthru, highlight_file, ignore_user_abord, listen, pclose, shell, define_syslog_variables, dl, showsource, ftp_exec
Warum werden diese Funktionen blockiert?
-
Funktionen wie
system,passthru,exec,shell_execkönnen Prozesse über die Befehlszeile ausführen. -
Mit den Funktionen
pcntl_*,posix_*können Systemprozesse gesteuert werden. -
Mit den Funktionen
socket_*können Verbindungen zu externen IPs geöffnet werden. -
Die Funktionen
mail,phpmail,sendmailkönnen zum Versenden von Spam oder unbefugten E-Mails verwendet werden. -
Funktionen wie
highlight_file,show_source,dlkönnen dazu führen, dass der Quellcode angezeigt oder eine Erweiterung geladen wird. -
Funktionen wie
apache_get_*,virtual,apache_notegeben Informationen über den Server und können zu Konfigurationsmanipulationen führen.
Sicherheitsvorteile
-
Verhindert, dass Benutzer in Shared-Hosting-Umgebungen den Server beschädigen.
-
Bietet zusätzlichen Schutz vor Angriffen wie RFI/LFI, Mail-Spamming und Reverse Shell.
-
Reduziert die Fähigkeit von extern geladenen PHP-Shells, Operationen auf dem System durchzuführen, erheblich.
Wo wird es definiert?
-
Global in der Datei
/etc/php.ini -
Oder benutzerbasiert in
php.ini,.user.ini,htaccessoder speziellencloudlinux-Einstellungen
Zur Überprüfung:
phpinfo();
oder
echo ini_get('disable_functions');
Hinweis:
Deaktivierte Funktionen können für den Entwickler notwendig sein. Wenn beispielsweise die mail()-Funktion deaktiviert ist, funktionieren Kontaktformulare möglicherweise nicht. Daher sollten Funktionen, die in einer Live-Umgebung verwendet werden sollen, im Voraus analysiert und speziell freigegeben werden.
Die disable_functions-Konfiguration ist eine kritische Verteidigungsschicht, um eine sichere PHP-Umgebung zu schaffen.