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.php
luar 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.com
untuk 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.php
di root web, permintaan untuk /wp-config.php
mengunduh file konfigurasi WordPress.
- Dengan di
wp-config.php
luar root web, permintaan untuk /wp-config.php
mengunduh file yang sama sekali tidak berbahaya. File asli wp-config.php
tidak dapat diunduh.
Jadi, jelas bahwa pindah ke wp-config.php
luar root web memiliki manfaat keamanan yang bonafid di dunia nyata .
Cara pindah wp-config.php
ke lokasi mana pun di server Anda
WordPress akan secara otomatis mencari satu direktori di atas instalasi WordPress Anda untuk wp-config.php
file Anda , jadi jika Anda memindahkannya, Anda sudah selesai!
Tetapi bagaimana jika Anda memindahkannya ke tempat lain? Mudah. Buat yang baru wp-config.php
di 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.php
file yang Anda pindahkan .)
Jika Anda mengalami masalah dengan open_basedir
, tambahkan saja jalur baru ke open_basedir
arahan 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.php
luar 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.php
cukup 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.php
bukan 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.php
luar root web sebenarnya membuat server kurang aman
Anda masih harus membiarkan WordPress mengakses [ wp-config.php
], jadi Anda perlu memperluas open_basedir
untuk memasukkan direktori di atas root dokumen.
SALAH : Dengan asumsi wp-config.php
ada httpdocs/
, cukup pindahkan ke ../phpdocs/
, dan setel open_basedir
untuk 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.php
luar root web Anda.