Penggunaan direktif Options Includes Noexec di dalam konfigurasi Apache HTTP Server (melalui berkas httpd.conf, apache2.conf, atau berkas .htaccess) berfungsi untuk mengizinkan pemrosesan Server Side Includes (SSI), tetapi secara tegas melarang eksekusi perintah shell atau skrip eksternal di dalam dokumen SSI tersebut.
Secara default, opsi Includes mengizinkan pemrosesan SSI (menggunakan tag seperti #include, #exec, dan lain-lain). Namun, pemberian izin penuh pada tag #exec membuka celah keamanan yang signifikan (Remote Code Execution), karena pengguna yang dapat mengunggah file HTML atau SHTML dapat mengeksekusi perintah sistem operasi melalui server web. Penambahan parameter Noexec bertindak sebagai pengaman untuk menonaktifkan fungsi eksekusi perintah sistem tersebut.
Sintaks dan Implementasi Konfigurasi
Penerapan direktif ini umumnya diletakkan di dalam blok direktori (<Directory>) atau di dalam berkas .htaccess. Berikut adalah contoh sintaks penerapan yang benar pada konfigurasi Apache:
<Directory "/var/www/html/docs">
Options +Includes -Indexes
Options IncludesNoexec
</Directory>Atau jika dikonfigurasikan langsung di dalam berkas .htaccess:
Options +Includes
Options -ExecCGI
Options IncludesNoexecTabel Komparasi Opsi SSI Apache
| Opsi Apache | Pemrosesan SSI (#include) | Eksekusi Perintah (#exec cgi/cmd) | Tingkat Keamanan |
|---|---|---|---|
Options +Includes | Diizinkan | Diizinkan (Berbahaya) | Rendah |
Options IncludesNoexec | Diizinkan | Dilarang (Diblokir) | Tinggi |
Options -Includes | Dilarang | Dilarang | Sangat Tinggi |
Langkah-Langkah Troubleshooting & Verifikasi
- Pastikan modul SSI sudah aktif di server Apache. Jalankan perintah terminal untuk mengaktifkan modul
include(pada Ubuntu/Debian):sudo a2enmod include. - Lakukan restart layanan Apache untuk menerapkan perubahan konfigurasi:
sudo systemctl restart apache2(atauhttpdpada sistem berbasis RedHat). - Buat file uji coba berformat
.shtmlyang memuat sintaks<!--#exec cmd="ls" -->. - Akses file tersebut melalui browser. Jika konfigurasi
IncludesNoexecberjalan efektif, server akan mengembalikan pesan error (biasanya "[an error occurred while processing this directive]" atau catatan dalam log error) dan perintah shell tidak akan dieksekusi. - Periksa log error Apache (
/var/log/apache2/error.log) untuk memastikan pemblokiran tercatat dengan benar.