Jawaban singkat: ya
Jawaban untuk pertanyaan ini adalah ya tegas , dan mengatakan sebaliknya sepenuhnya tidak bertanggung jawab .
Jawaban panjang: contoh dunia nyata
Izinkan saya untuk memberikan contoh yang sangat nyata, dari server saya yang sangat nyata, di mana pindah ke wp-config.phpluar root web secara khusus mencegah kontennya ditangkap .
Serangga:
Lihatlah deskripsi bug di Plesk ini (diperbaiki pada 11.0.9 MU # 27):
Plesk me-reset penerusan subdomain setelah menyinkronkan berlangganan dengan paket hosting (117199)
Kedengarannya tidak berbahaya, bukan?
Nah, inilah yang saya lakukan untuk memicu bug ini:
- Mengatur subdomain untuk mengarahkan ke URL lain (misalnya
site.staging.server.comuntuk site-staging.ssl.server.com).
- Mengubah paket layanan berlangganan (mis. Konfigurasi PHP-nya).
Ketika saya melakukan ini, Plesk mereset subdomain ke default: menyajikan konten ~/httpdocs/, tanpa penerjemah (mis. PHP) aktif.
Dan saya tidak menyadarinya. Selama berminggu-minggu.
Hasil:
- Dengan
wp-config.phpdi root web, permintaan untuk /wp-config.phpmengunduh file konfigurasi WordPress.
- Dengan di
wp-config.phpluar root web, permintaan untuk /wp-config.phpmengunduh file yang sama sekali tidak berbahaya. File asli wp-config.phptidak dapat diunduh.
Jadi, jelas bahwa pindah ke wp-config.phpluar root web memiliki manfaat keamanan yang bonafid di dunia nyata .
Cara pindah wp-config.phpke lokasi mana pun di server Anda
WordPress akan secara otomatis mencari satu direktori di atas instalasi WordPress Anda untuk wp-config.phpfile Anda , jadi jika Anda memindahkannya, Anda sudah selesai!
Tetapi bagaimana jika Anda memindahkannya ke tempat lain? Mudah. Buat yang baru wp-config.phpdi direktori WordPress dengan kode berikut:
<?php
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Location of your WordPress configuration. */
require_once(ABSPATH . '../phpdocs/wp-config.php');
(Pastikan untuk mengubah jalur di atas ke jalur sebenarnya dari wp-config.phpfile yang Anda pindahkan .)
Jika Anda mengalami masalah dengan open_basedir, tambahkan saja jalur baru ke open_basedirarahan dalam konfigurasi PHP Anda:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
Itu dia!
Memilih argumen yang bertentangan
Setiap argumen yang menentang pindah ke wp-config.phpluar root web bergantung pada asumsi yang salah.
Argumen 1: Jika PHP dinonaktifkan, mereka sudah masuk
Satu-satunya cara seseorang akan melihat bahwa konten [ wp-config.php] adalah jika mereka menghindari server Anda penerjemah PHP ... Jika itu terjadi, Anda sudah dalam masalah: mereka memiliki akses langsung ke server Anda.
FALSE : Skenario yang saya jelaskan di atas adalah hasil dari kesalahan konfigurasi, bukan intrusi.
Argumen 2: Menonaktifkan PHP secara tidak sengaja jarang terjadi, dan karenanya tidak signifikan
Jika penyerang memiliki akses yang cukup untuk mengubah handler PHP, Anda sudah kacau. Perubahan yang tidak disengaja sangat langka dalam pengalaman saya, dan dalam hal ini akan mudah untuk mengubah kata sandi.
SALAH : Skenario yang saya jelaskan di atas adalah hasil dari bug di bagian umum dari perangkat lunak server, yang mempengaruhi konfigurasi server umum. Ini hampir tidak "langka" (dan selain itu, keamanan berarti mengkhawatirkan skenario yang jarang terjadi).
WTF : Mengubah kata sandi setelah intrusi sangat membantu jika informasi sensitif diambil selama intrusi. Sungguh, apakah kita masih berpikir WordPress hanya digunakan untuk blogging biasa, dan bahwa penyerang hanya tertarik pada deflasi? Mari kita khawatirkan melindungi server kita, bukan hanya mengembalikannya setelah seseorang masuk.
Argumen 3: Menolak akses ke wp-config.phpcukup baik
Anda dapat membatasi akses ke file melalui konfigurasi host virtual Anda atau
.htaccess- secara efektif membatasi akses luar ke file dengan cara yang sama seperti bergerak di luar root dokumen.
SALAH : Bayangkan default server Anda untuk host virtual adalah: tidak ada PHP, tidak .htaccess, allow from all(hampir tidak biasa dalam lingkungan produksi). Jika konfigurasi Anda entah bagaimana diatur ulang selama operasi rutin - seperti, katakanlah, pembaruan panel - semuanya akan kembali ke keadaan default, dan Anda terbuka.
Jika model keamanan Anda gagal ketika pengaturan secara tidak sengaja diatur ulang ke default, Anda memerlukan keamanan lebih.
WTF : Mengapa ada orang yang secara khusus merekomendasikan lebih sedikit lapisan keamanan? Mobil mahal tidak hanya memiliki kunci; mereka juga memiliki alarm, immobilizer, dan pelacak GPS. Jika ada sesuatu yang layak dilindungi, lakukan dengan benar.
Argumen 4: Akses tidak sah ke wp-config.phpbukan masalah besar
Informasi basis data adalah satu-satunya hal sensitif di [ wp-config.php].
SALAH : Kunci dan garam otentikasi dapat digunakan dalam sejumlah potensi serangan pembajakan.
WTF : Sekalipun kredensial basis data adalah satu-satunya yang ada di dalamnya wp-config.php, Anda harus takut penyerang akan mendapatkannya.
Argumen 5: Bergerak di wp-config.phpluar root web sebenarnya membuat server kurang aman
Anda masih harus membiarkan WordPress mengakses [ wp-config.php], jadi Anda perlu memperluas open_basediruntuk memasukkan direktori di atas root dokumen.
SALAH : Dengan asumsi wp-config.phpada httpdocs/, cukup pindahkan ke ../phpdocs/, dan setel open_basediruntuk menyertakan saja httpdocs/dan phpdocs/. Misalnya:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
(Ingatlah untuk selalu memasukkan /tmp/, atau tmp/direktori pengguna Anda , jika Anda memilikinya.)
Kesimpulan: file konfigurasi harus selalu selalu selalu berada di luar akar web
Jika Anda peduli dengan keamanan, Anda akan pindah ke wp-config.phpluar root web Anda.