Cara Disable Server Side Includes (SSI) untuk Keamanan Web

Menonaktifkan Server Side Includes (SSI) pada server web Anda adalah langkah krusial untuk mencegah kerentanan eksploitasi seperti eksekusi perintah jarak jauh (RCE) dan serangan injeksi lainnya. SSI merupakan fitur direktif yang memungkinkan server menyisipkan konten ke dalam file HTML secara dinamis sebelum disajikan ke peramban. Jika tidak digunakan secara aktif, keberadaan SSI membuka celah bagi penyerang untuk menyisipkan skrip berbahaya melalui formulir input pengguna atau manipulasi parameter HTTP.

Prosedur untuk mematikan fungsi SSI bervariasi tergantung pada perangkat lunak server yang digunakan, seperti Apache HTTP Server, Nginx, atau Microsoft Internet Information Services (IIS). Berikut adalah panduan teknis langkah demi langkah untuk menonaktifkan SSI pada masing-masing platform server utama.

Metode Disable SSI Berdasarkan Web Server

Tabel berikut merangkum direktif konfigurasi utama yang harus diubah untuk mematikan fitur SSI pada berbagai jenis web server.

Web Server File Konfigurasi Utama Direktif / Langkah Menonaktifkan
Apache HTTP Server httpd.conf atau .htaccess Hapus Includes dari direktif Options atau gunakan Options -Includes
Nginx nginx.conf Pastikan modul ssi tidak diaktifkan; hapus atau set ssi off;
Microsoft IIS IIS Manager / web.config Hapus modul Includes dari daftar modul atau nonaktifkan dari Handler Mappings

1. Cara Disable SSI di Apache HTTP Server

Pada server Apache, SSI diatur melalui modul mod_include. Anda dapat menonaktifkannya secara global di file konfigurasi utama atau secara spesifik per direktori menggunakan file .htaccess.

Langkah Teknis:

  1. Buka file konfigurasi Apache Anda (biasanya terletak di /etc/httpd/conf/httpd.conf atau /etc/apache2/apache2.conf).
  2. Cari blok konfigurasi direktori untuk situs Anda, lalu ubah baris Options dengan menghapus kata Includes atau menambahkan tanda minus di depannya:
<Directory "/var/www/html">
    # Mencegah penggunaan SSI pada direktori ini
    Options -Includes
</Directory>
  1. Jika Anda menggunakan file .htaccess di dalam root direktori web, tambahkan baris berikut:
Options -Includes
  1. Simpan perubahan file, lalu uji sintaks konfigurasi Apache dan lakukan restart layanan:
sudo apachectl configtest
sudo systemctl restart apache2

2. Cara Disable SSI di Nginx

Secara default, Nginx tidak mengaktifkan SSI kecuali direktif ssi on; dideklarasikan secara eksplisit di dalam blok konfigurasi server atau lokasi. Untuk memastikan SSI benar-benar nonaktif, pastikan direktif tersebut diatur ke off atau dihapus sepenuhnya.

Langkah Teknis:

  1. Buka file konfigurasi Nginx Anda (biasanya di /etc/nginx/nginx.conf atau di dalam direktori sites-available/).
  2. Cari blok server atau location yang menangani file web Anda.
  3. Pastikan baris ssi diatur menjadi off:
server {
    listen 80;
    server_name contoh.com;
    root /var/www/html;

    # Menonaktifkan Server Side Includes
    ssi off;
}
  1. Simpan file konfigurasi, periksa kesalahan sintaks, dan muat ulang Nginx:
sudo nginx -t
sudo systemctl reload nginx

3. Cara Disable SSI di Microsoft IIS

Pada lingkungan Windows Server menggunakan IIS, SSI dijalankan melalui modul Server Side Includes (biasanya file dengan ekstensi .shtml diproses oleh handler ini).

Langkah Teknis via IIS Manager:

  1. Buka Internet Information Services (IIS) Manager.
  2. Pilih situs web yang ingin Anda amankan pada panel Koneksi di sebelah kiri.
  3. Klik dua kali pada fitur Handler Mappings di tampilan utama.
  4. Cari mapping yang menangani file SSI (biasanya bernama SSI-parsed dengan ekstensi *.shtml).
  5. Klik kanan pada handler tersebut dan pilih Remove atau Disable untuk menghentikan pemrosesan SSI.

Alternatifnya, Anda dapat menonaktifkannya melalui file web.config pada direktori root aplikasi:

<configuration>
    <system.webServer>
        <handlers>
            <remove name="SSI-parsed" />
        </handlers>
    </system.webServer>
</configuration>

Troubleshooting dan Verifikasi

Setelah menerapkan konfigurasi untuk menonaktifkan SSI, lakukan pengujian untuk memastikan fitur benar-benar nonaktif:

  • Buat file uji dengan ekstensi yang biasa digunakan SSI (misalnya test.shtml) yang berisi sintaks injeksi dasar seperti <!--#echo var="DATE_LOCAL" -->.
  • Akses file tersebut melalui peramban web.
  • Jika konfigurasi berhasil, teks sintaks akan ditampilkan apa adanya sebagai teks mentah atau server akan memberikan respons error 404/500, alih-alih mengeksekusi perintah untuk menampilkan tanggal lokal sistem.