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_exec
kö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
,sendmail
können zum Versenden von Spam oder unbefugten E-Mails verwendet werden. -
Funktionen wie
highlight_file
,show_source
,dl
können dazu führen, dass der Quellcode angezeigt oder eine Erweiterung geladen wird. -
Funktionen wie
apache_get_*
,virtual
,apache_note
geben 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
,htaccess
oder 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.