Bagaimana konfigurasi .htaccess atau Nginx untuk mencegah eksekusi skrip PHP

Share

Direktori wp-content/mu-plugins dirancang oleh WordPress agar berkas PHP di dalamnya dieksekusi secara internal oleh sistem WordPress saat memproses permintaan HTTP (melalui hook atau include internal), bukan untuk diakses atau dipanggil langsung dari peramban (web browser) oleh pengguna maupun bot peretas.

Membatasi akses langsung ke berkas PHP di direktori ini adalah langkah pencegahan (hardening) yang sangat efektif untuk memutus eksekusi langsung dari skrip backdoor atau malware self-healing.

Berikut adalah konfigurasi yang tepat untuk Apache (.htaccess) dan Nginx.

1. Konfigurasi Apache (.htaccess)

Buat atau sunting berkas .htaccess yang diletakkan langsung di dalam direktori wp-content/mu-plugins/.htaccess.

Konfigurasi .htaccess (Apache 2.4+):

Apache

# Blokir akses langsung ke semua berkas PHP di mu-plugins
<FilesMatch "\.php$">
    Require all denied
</FilesMatch>

# Abaikan listing direktori jika opsi ini aktif
Options -Indexes

Catatan Penting: Konfigurasi di atas melarang akses HTTP/HTTPS langsung dari luar, namun tidak mengganggu WordPress dalam memuat (include) plugin mu-plugins dari sisi peladen (PHP internal).

2. Konfigurasi Nginx (nginx.conf atau Server Block)

Pada Nginx, aturan pemblokiran tidak dibuat di dalam direktori terpisah via .htaccess, melainkan dimasukkan ke dalam berkas konfigurasi server block atau blok vhost situs Anda (biasanya di /etc/nginx/sites-available/domain.com atau /etc/nginx/conf.d/).

Tambahkan blok location berikut di dalam blok server { ... }:

Nginx

# Mencegah eksekusi/akses langsung ke berkas PHP di direktori mu-plugins
location ~* ^/wp-content/mu-plugins/.*\.php$ {
    deny all;
    return 403;
}

Langkah Penerapan di Nginx:

  1. Uji sintaks konfigurasi Nginx untuk memastikan tidak ada kesalahan:Bashsudo nginx -t
  2. Muat ulang konfigurasi Nginx:Bashsudo systemctl reload nginx

3. Manfaat & Efek Perlindungan

  1. Memutus Jalur Eksekusi C2 / Backdoor Direct Hit: Banyak malware stealth yang mencoba memanggil skripnya secara langsung melalui URL (misal: [https://example.com/wp-content/mu-plugins/advanced-cache.php](https://example.com/wp-content/mu-plugins/advanced-cache.php)). Dengan aturan ini, peladen akan langsung mengembalikan respon 403 Forbidden.
  2. Tidak Mengganggu Kompatibilitas WordPress: WordPress memuat mu-plugins melalui fungsi require_once di tingkat sistem file lokal peladen (server-side filesystem), sehingga aturan HTTP blokir Nginx/Apache ini 100% aman bagi fungsionalitas WordPress.

Read more

Local News