disable_functions direktifi, PHP konfigürasyon dosyasında (php.ini) yer alan ve sunucu güvenliği açısından kritik öneme sahip bir ayardır. Bu ayar sayesinde belirli PHP fonksiyonlarının çalıştırılması engellenerek, potansiyel zararlı betiklerin sisteme zarar vermesi önlenir.
Aşağıda örnek olarak sunulmuş disable_functions değeri oldukça kapsamlıdır ve pek çok kritik fonksiyonu devre dışı bırakmaktadır:
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
Bu Fonksiyonlar Neden Engellenir?
-
system,passthru,exec,shell_execgibi fonksiyonlar komut satırından işlem çalıştırabilir. -
pcntl_*,posix_*fonksiyonları ile sistem süreçleri kontrol edilebilir. -
socket_*fonksiyonları ile dış IP’lere bağlantı açılabilir. -
mail,phpmail,sendmailfonksiyonları spam veya yetkisiz mail göndermek için kullanılabilir. -
highlight_file,show_source,dlgibi fonksiyonlar kaynak kodunun görüntülenmesine veya uzantı yüklenmesine neden olabilir. -
apache_get_*,virtual,apache_notegibi fonksiyonlar sunucu hakkında bilgi verir ve konfigürasyon manipülasyonlarına yol açabilir.
Güvenlik Avantajları
-
Paylaşımlı hosting ortamlarında kullanıcıların sunucuya zarar vermesini önler.
-
RFI/LFI, mail spamming, reverse shell gibi saldırılara karşı ek güvenlik sağlar.
-
Dışarıdan yüklenen PHP shell’lerinin sistem üzerinde işlem yapma kabiliyetini büyük ölçüde azaltır.
Nerede Tanımlanır?
-
Global olarak
/etc/php.inidosyasında -
Veya kullanıcı bazlı
php.ini,.user.ini,htaccessveyacloudlinuxözel ayarlarında
Kontrol Etmek İçin:
phpinfo();
veya
echo ini_get('disable_functions');
Not:
Engellenen fonksiyonlar geliştirici için gerekli olabilir. Örneğin mail() fonksiyonu devre dışıysa iletişim formları çalışmayabilir. Bu nedenle canlı ortamda kullanılacak fonksiyonlar önceden analiz edilip özel izin verilmelidir.
Güvenli bir PHP ortamı oluşturmak için disable_functions yapılandırması kritik bir savunma katmanıdır.