Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

.htaccess untuk Mencegah Eksekusi PHP

2 min read .
.htaccess untuk Mencegah Eksekusi PHP

Salah satu titik rawan dalam aplikasi web adalah folder uploads—tempat pengguna bebas mengunggah file. Jika tidak hati-hati, folder ini bisa jadi pintu masuk hacker. Bayangkan ada yang mengunggah file bernama shell.php. Kalau server mengizinkan file itu dieksekusi, game over.

Untungnya, ada cara sederhana tapi efektif untuk mencegah hal ini: konfigurasi .htaccess.

Kenapa .htaccess Penting?

Di server Apache, .htaccess adalah file konfigurasi lokal. Artinya, kita bisa menaruh aturan keamanan spesifik untuk sebuah direktori, tanpa harus mengutak-atik konfigurasi global server.

Folder seperti /uploads, /assets, atau /media biasanya tidak butuh script PHP, cukup file statis seperti gambar, PDF, atau dokumen. Nah, inilah target ideal untuk proteksi .htaccess.

Contoh .htaccess Anti-Eksekusi PHP

Berikut contoh konfigurasi:

php_flag engine off

<FilesMatch "\.(php|php[34578]?|phtml)$">
  RemoveHandler .php .php3 .php4 .php5 .php7 .php8 .phtml
  RemoveType .php .php3 .php4 .php5 .php7 .php8 .phtml
  ForceType text/plain
  Require all denied
</FilesMatch>

Options -ExecCGI
Options -Includes

Mari kita kupas satu per satu.

1. php_flag engine off

Baris ini mematikan PHP engine di folder tersebut. Jadi, meskipun ada file .php, server tidak akan mengeksekusinya.

2. <FilesMatch "\.(php|php[34578]?|phtml)$">

Aturan ini menargetkan semua file PHP atau turunannya. Di dalamnya:

  • RemoveHandler & RemoveType → Menghapus asosiasi file dengan PHP.
  • ForceType text/plain → Kalau file .php tetap diakses, server akan mengirimnya sebagai teks biasa, bukan script.
  • Require all denied → Blokir total akses ke file PHP.

Dengan ini, shell.php tidak akan pernah bisa dijalankan.

3. Options -ExecCGI

Mematikan eksekusi CGI script. Ini mencegah file .cgi atau sejenisnya dipakai sebagai pintu belakang.

4. Options -Includes

Mematikan Server Side Includes (SSI). SSI memang fitur lama, tapi masih bisa disalahgunakan untuk menjalankan perintah berbahaya.

Best Practice: Taruh di Folder Upload

Biasanya aturan ini ditempatkan di folder:

/var/www/html/uploads/.htaccess

atau kalau pakai struktur Laravel/CodeIgniter:

/public/uploads/.htaccess

Dengan begitu, file hasil upload (gambar, PDF, zip, dll.) tetap bisa diakses, tapi script PHP berbahaya tidak akan pernah jalan.

Tambahan: Batasi Akses File Tertentu

Anda juga bisa memperketat dengan membatasi hanya tipe file tertentu yang boleh diakses:

<FilesMatch "\.(jpg|jpeg|png|gif|pdf|docx|zip)$">
  Require all granted
</FilesMatch>

<FilesMatch ".*">
  Require all denied
</FilesMatch>

Aturan ini hanya mengizinkan file gambar, PDF, dokumen, dan ZIP. Sisanya otomatis ditolak.

Kesimpulan

Menambahkan .htaccess di folder upload adalah langkah kecil dengan dampak besar. Dengan konfigurasi ini:

  • File PHP atau script berbahaya tidak bisa dijalankan.
  • CGI dan SSI dimatikan.
  • Server lebih aman dari eksploitasi upload.

Kalau aplikasi Anda berjalan di Apache dan punya folder upload publik, segera pasang aturan ini. Lebih baik mencegah sebelum terlambat.

Lihat Juga

chevron-up