Cara Menonaktifkan Fungsi shell_exec di PHP untuk Keamanan Server

Langkah Menonaktifkan shell_exec

Untuk menonaktifkan fungsi shell_exec dan fungsi eksekusi perintah sistem lainnya di PHP, Anda harus memodifikasi file konfigurasi php.ini. Langkah ini krusial untuk mencegah serangan Remote Code Execution (RCE) yang sering memanfaatkan fungsi ini untuk menjalankan perintah shell di tingkat server.

Prosedur Teknis

  1. Cari lokasi file php.ini aktif Anda dengan menjalankan perintah php --ini di terminal atau membuat file info.php dengan isi <?php phpinfo(); ?>.
  2. Buka file tersebut menggunakan editor teks (seperti nano atau vi).
  3. Cari direktif disable_functions. Jika belum ada, tambahkan baris baru.
  4. Masukkan daftar fungsi yang ingin dinonaktifkan, dipisahkan dengan koma.
  5. Simpan perubahan dan restart layanan web server (Apache atau PHP-FPM).
disable_functions = shell_exec, exec, system, passthru, proc_open, popen, curl_multi_exec, parse_ini_file, show_source

Tabel Fungsi Berbahaya yang Wajib Dinonaktifkan

FungsiDeskripsi Risiko
shell_execMenjalankan perintah shell dan mengembalikan output sebagai string.
execMenjalankan perintah eksternal.
systemMenjalankan perintah eksternal dan menampilkan output langsung.
passthruMenjalankan perintah eksternal dan menampilkan output mentah.
proc_openMembuka proses untuk input/output, sangat berisiko untuk RCE.

Verifikasi Perubahan

Setelah melakukan restart pada web server, pastikan fungsi tersebut benar-benar telah dinonaktifkan dengan menjalankan skrip PHP berikut:

<?php
if (function_exists('shell_exec')) {
    echo "shell_exec masih aktif.";
} else {
    echo "shell_exec telah dinonaktifkan.";
}
?>

Tips Troubleshooting

Jika aplikasi web Anda memerlukan fungsi tertentu untuk berjalan, pastikan untuk tidak memasukkan fungsi tersebut ke dalam daftar disable_functions. Selalu lakukan pengujian di lingkungan staging sebelum menerapkan perubahan pada server produksi. Jika Anda menggunakan panel kontrol seperti cPanel atau Plesk, pengaturan ini biasanya tersedia di menu 'MultiPHP INI Editor'.