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_exec
gibi 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
,sendmail
fonksiyonları spam veya yetkisiz mail göndermek için kullanılabilir. -
highlight_file
,show_source
,dl
gibi fonksiyonlar kaynak kodunun görüntülenmesine veya uzantı yüklenmesine neden olabilir. -
apache_get_*
,virtual
,apache_note
gibi 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.ini
dosyasında -
Veya kullanıcı bazlı
php.ini
,.user.ini
,htaccess
veyacloudlinux
ö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.