Dalam pengembangan web modern, keamanan aplikasi menjadi aspek yang sangat penting untuk diperhatikan. Salah satu kesalahan umum yang dilakukan oleh banyak administrator dan developer adalah tidak menonaktifkan fungsi-fungsi PHP yang tidak digunakan pada server mereka. Kesalahan ini dapat menimbulkan berbagai risiko keamanan, terutama jika situs web Anda diakses secara publik atau digunakan untuk aplikasi penting.
PHP menyediakan banyak sekali fungsi bawaan yang memudahkan developer dalam membuat aplikasi. Namun, tidak semua fungsi tersebut digunakan dalam aplikasi yang kita kembangkan. Fungsi-fungsi seperti exec, shell_exec, system, passthru, popen, dan berbagai fungsi lain dapat memberikan akses ke sistem operasi dan berpotensi dimanfaatkan untuk menjalankan perintah berbahaya oleh pihak yang tidak bertanggung jawab.
Untuk mencegah penyalahgunaan, administrator dapat menonaktifkan fungsi-fungsi PHP yang tidak dibutuhkan melalui konfigurasi pada file php.ini menggunakan direktif disable_functions. Dengan cara ini, fungsi-fungsi tersebut tidak bisa digunakan bahkan jika suatu celah ditemukan pada aplikasi.
exec atau system tetap aktif, penyerang dapat memanfaatkannya untuk menjalankan perintah sistem yang dapat merusak server atau mencuri data.
eval, base64_decode, atau create_function sering digunakan oleh malware untuk menjalankan kode berbahaya secara dinamis. Jika fungsi-fungsi ini tidak dinonaktifkan, risiko terinfeksi backdoor meningkat.
Awali dengan mengidentifikasi fungsi mana saja yang benar-benar tidak diperlukan oleh aplikasi Anda. Sebaiknya konsultasikan dengan developer atau dokumentasi aplikasi untuk memastikan tidak ada fitur penting yang terganggu.
php.ini
Buka file php.ini yang digunakan server Anda. Cari bagian disable_functions. Tambahkan fungsi-fungsi PHP yang ingin dinonaktifkan, misalnya:
disable_functions = exec, system, shell_exec, passthru, popen, eval, base64_decode, create_function
Setelah mengedit php.ini, lakukan restart pada web server agar perubahan diterapkan. Misalnya pada Apache atau nginx:
sudo systemctl restart apache2
sudo systemctl restart nginx
Pastikan aplikasi berjalan normal dan tidak mengalami error setelah perubahan dilakukan. Anda dapat memeriksa fungsi-fungsi yang sudah dinonaktifkan dengan phpinfo() atau menjalankan skrip pengecekan khusus.
exec, system, shell_exec, passthru, popen: Fungsi untuk eksekusi perintah shell.eval: Menjalankan kode PHP dari string.base64_decode: Sering digunakan untuk menyembunyikan kode berbahaya.create_function: Membuat fungsi PHP secara dinamis.proc_open, pcntl_exec, show_source: Fungsi terkait sistem operasi dan file.dl, curl_exec, curl_multi_exec: Fungsi untuk load extension dan operasi curl.Solusi utama dari masalah ini adalah menonaktifkan fungsi PHP yang tidak digunakan. Dengan mengambil langkah ini, Anda telah memperkuat keamanan server dan aplikasi web yang Anda kelola. Cara ini merupakan langkah mitigasi penting untuk mencegah eksploitasi jika terjadi kerentanan pada aplikasi.
Kesimpulan: Menonaktifkan fungsi PHP yang tidak digunakan adalah langkah sederhana namun sangat efektif dalam meningkatkan keamanan web server. Pastikan Anda selalu melakukan review dan konfigurasi yang tepat pada file php.ini untuk menjaga keamanan aplikasi dan data Anda dari ancaman yang tidak diinginkan.