Pertimbangkan pengaturan open_basedir
berdasarkan "per situs". open_basedir
adalah pengaturan php.ini yang akan mencegah skrip Anda mengakses file di luar daftar putih yang ditentukan. Jika server Anda meng-host beberapa situs, itu akan mencegah satu situs dari membaca pengaturan database dari situs lain. Ini juga akan mencegah skrip php dari mengakses / memodifikasi file sistem inti. Open basedir mudah diatur, cukup tambahkan baris " php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
" ke setiap vhost Apache.
Juga pertimbangkan mematikan mesin skrip PHP untuk semua situs / folder yang tidak boleh berisi skrip PHP (misalnya folder gambar yang diunggah). Sekali lagi, ini sederhana, tambahkan "php_admin_value engine off" ke Apache VirtualHosts yang tidak memerlukan php. Untuk menonaktifkan PHP di direktori, masukkan hal yang sama ke tag Direktori.
Jalankan izin file seketat mungkin, hindari akses tulis ke skrip PHP untuk pengguna Apache, ini mencegah skrip yang berjalan dari memodifikasi sendiri atau skrip lain di situs / server yang sama. Hindari 777 izin jika memungkinkan, cari tahu izin minimum yang diperlukan untuk menjalankan aplikasi dan menggunakannya.
Jika Anda meng-hosting beberapa situs, masing-masing dengan database sendiri, gunakan pengguna MySQL / Postgres yang terpisah untuk masing-masing, dan atur izin pada setiap pengguna sehingga mereka hanya memiliki akses ke database yang relevan. Sekali lagi ini akan mencegah skrip nakal merusak database aplikasi lain.
Suosin, HardenedPHP, mod_security dan sejenisnya juga sangat berharga, tetapi menggunakannya sebagai tambahan untuk konfigurasi yang dikunci dengan ketat, bukan sebagai ganti.