Jelas bahwa PHP+MySQL+Apache adalah teknologi web yang sangat populer. Kombinasi ini kuat, dapat diskalakan, dan masih gratis. Namun, pengaturan default PHP tidak cocok untuk situs web yang sudah online. Di bawah ini, kami dapat meningkatkan kebijakan keamanan PHP dengan memodifikasi file konfigurasi default!
0x01: Nonaktifkan fungsi pemrosesan file URL jarak jauh
Seperti fungsi pemrosesan file Fopen, yang menerima parameter rule file (misalnya: fopen ('http: //www.yoursite.com' ,'r')).), Fungsi ini dapat dengan mudah mengakses sumber daya jarak jauh. Namun, ini adalah ancaman keamanan yang sangat penting. Menonaktifkan fungsi ini untuk membatasi fungsi file adalah pilihan yang baik. Buat modifikasi berikut dalam file php.ini:
Salinan kode adalah sebagai berikut:
ALLIVE_URL_FOPEN = OFF
0x02: Nonaktifkan pendaftaran variabel global
Dalam versi sebelum 4.2.0, PHP menggunakan variabel global sebagai input. Fungsi ini disebut register_globals. Dalam aplikasi Web, ini menyebabkan banyak masalah keamanan karena memungkinkan penyerang untuk dengan mudah mengoperasikan variabel global dalam beberapa kasus. Untungnya, fungsi dalam 4.2.0 dinonaktifkan secara default. Itu sangat berbahaya. Fungsi ini harus dinonaktifkan dalam keadaan apa pun. Jika beberapa skrip memerlukan fitur ini, maka ada potensi ancaman keamanan terhadap skrip ini. Ubah pnp.ini untuk menonaktifkan fungsi ini:
Salinan kode adalah sebagai berikut:
register_globals = off
0x03: Operasi Baca dan Tulis PHP Terbatas
Dalam banyak proses pengembangan web, skrip PHP perlu membaca dan menulis operasi ke sistem file lokal, seperti/var/www/htdocs/file. Untuk meningkatkan keamanan, Anda dapat memodifikasi izin membaca dan menulis file lokal:
Salinan kode adalah sebagai berikut:
open_basedir =/var/www/htdocs/file
0x04: Batas Posing
Membatasi Waktu Eksekusi PHP, Penggunaan Memori, Data Posting dan Unggah adalah strategi terbaik, dan konfigurasi berikut dapat dibuat:
Salinan kode adalah sebagai berikut:
max_execution_time = 30; Max Script Execution Time
max_input_time = 60; Waktu maksimal menghabiskan input parsing
Memory_limit = 16m; Memori maks yang digunakan oleh satu skrip
unggah_max_filesize = 2m; Ukuran file unggah maks
POST_MAX_SIZE = 8M; Ukuran posting maks
0x05: Nonaktifkan pesan kesalahan dan aktifkan logging
Di pengaturan default, PHP akan mengeluarkan pesan kesalahan ke browser. Pengaturan default ini adalah konfigurasi yang paling masuk akal selama proses pengembangan aplikasi. Namun, itu juga dapat membocorkan beberapa informasi keamanan kepada pengguna, seperti jalur instalasi dan nama pengguna. Di situs web yang telah dikembangkan, yang terbaik adalah menonaktifkan pesan kesalahan dan mengeluarkan pesan kesalahan ke file log.
Salinan kode adalah sebagai berikut:
display_errors = off
log_errors = on
0x06: Sembunyikan file php
Jika file PHP tidak disembunyikan, kami dapat memperoleh versi server PHP melalui berbagai metode, misalnya: http://www.example.com/script.php?=phpb8b5f2a0-3c92-11d3-a3a9-4c7b08c10000
Jelas, kami tidak ingin pengguna secara langsung mendapatkan versi PHP dari server situs web Anda. Untungnya, ada saklar di php.ini yang dapat menonaktifkan fungsi ini:
Salinan kode adalah sebagai berikut:
Expose_php = OFF
0x07: Konfigurasi mode aman
Secara default, PHP dapat dikonfigurasi dalam mode aman. Dalam mode ini, Apache melarang mengakses file, variabel lingkungan, dan program biner. Dalam mode aman, masalah terbesar adalah bahwa hanya pemilik file yang dapat mengakses file PHP ini. Jika banyak pengembang secara bersama -sama mengembangkan program ini, pengaturan seperti itu tidak realistis. Ketika Anda perlu mengakses file PHP, Anda perlu memodifikasi pemilik file. Masalah lain adalah bahwa program lain tidak dapat mengakses file PHP ini. Konfigurasi berikut dapat memodifikasi izin file ke grup pengguna daripada satu pengguna.
Salinan kode adalah sebagai berikut:
safe_mode = off
safe_mode_gid = on
Dengan mengaktifkan safe_mode_gid, Anda dapat mengakses file PHP dengan menggunakan grup Apache ini. Mode aman juga sangat efektif dalam mencegah eksekusi biner, namun, pengembang ingin dapat menjalankan beberapa file biner dalam situasi tertentu. Dalam kasus -kasus khusus ini, Anda dapat memasukkan file biner ke dalam direktori, misalnya (/var/www/binari), dan Anda dapat membuat pengaturan berikut:
Salinan kode adalah sebagai berikut:
safe_mode_exec_dir =/var/www/binari
Akhirnya, melalui pengaturan berikut, Anda dapat mengakses variabel lingkungan server, memberikan awalan "_" yang hanya dapat mengakses variabel lingkungan dengan awalan yang ditentukan:
Salinan kode adalah sebagai berikut:
safe_mode_allowed_env_vars = php_
0x08: Membatasi akses publik ke file dengan nama akhiran tertentu
Karena alasan keamanan, banyak file dengan nama sufiks tertentu tidak dapat diakses oleh pengguna publik. Misalnya, file dengan akhiran .inc berisi beberapa informasi sensitif, seperti informasi koneksi MySQL. Jika tidak ada konfigurasi yang sesuai, maka setiap pengguna dapat mengakses file konfigurasi ini. Untuk meningkatkan keamanan situs web, Anda perlu mengonfigurasi yang berikut ini dalam file ..htaccess:
Salinan kode adalah sebagai berikut:
<shilesmatch>
Pesanan memungkinkan, menyangkal
Menyangkal dari semua
</shilematch>
0x09: Ringkasan
Konfigurasi default PHP adalah untuk pengembang. Jika situs web untuk sejumlah besar pengguna, disarankan untuk mengkonfigurasi ulang PHP.