Server Side Includes (SSI) adalah bahasa scripting sisi server sederhana yang digunakan terutama di World Wide Web untuk menyisipkan isi suatu dokumen ke dalam dokumen HTML lain sebelum disajikan ke peramban pengguna. SSI dieksekusi oleh web server (seperti Apache atau NGINX) yang memproses arahan khusus di dalam komentar HTML khusus sebelum mengirimkan halaman akhir ke klien.
Penggunaan tag SSI memungkinkan pengembang web untuk membuat elemen modular yang berulang—seperti header, footer, atau menu navigasi—tanpa harus menyalin dan menempelkan kode yang sama ke setiap halaman HTML secara manual. File yang menggunakan arahan SSI biasanya disimpan dengan ekstensi khusus, umumnya .shtml, .shtm, atau .stm, meskipun beberapa konfigurasi server memungkinkan pemrosesan pada file .html biasa.
Daftar Arahan dan Tag SSI Utama
Format dasar dari tag SSI menggunakan sintaks komentar HTML khusus yang diawali dengan string <!--# dan diakhiri dengan -->. Berikut adalah daftar arahan utama yang didukung oleh sebagian besar server web:
| Tag / Arahan SSI | Atribut Utama | Fungsi Utama |
|---|---|---|
include |
file, virtual |
Menyisipkan isi dari file eksternal (header, footer, teks) ke dalam dokumen saat ini. |
echo |
var, encoding |
Menampilkan nilai dari variabel server atau variabel lingkungan tertentu. |
config |
timefmt, sizefmt, errmsg |
Mengatur format tampilan tanggal, ukuran file, atau pesan kesalahan kustom. |
flastmod |
file, virtual |
Menampilkan tanggal dan waktu modifikasi terakhir dari suatu file. |
fsize |
file, virtual |
Menampilkan ukuran file dari dokumen tertentu dalam format bita, KB, atau MB. |
set |
var, value |
Mendefinisikan atau menetapkan nilai baru pada variabel kustom. |
exec |
cmd, cgi |
Menjalankan perintah sistem operasi atau skrip CGI eksternal (biasanya dinonaktifkan demi keamanan). |
if / elif / else / endif |
expr |
Membuat percabangan logika kondisional bersyarat di dalam dokumen HTML. |
Contoh Penerapan Tag SSI
Berikut adalah contoh kode penggunaan beberapa tag SSI yang paling sering diimplementasikan dalam struktur dokumen HTML modular:
<!--#config timefmt="A, %d %B %Y" -->
<!--#include virtual="/includes/header.html" -->
<main>
<h1>Selamat Datang di Situs Kami</h1>
<p>Halaman ini terakhir diperbarui pada: <!--#flastmod virtual="index.shtml" --></p>
<p>Alamat IP Anda adalah: <!--#echo var="REMOTE_ADDR" --></p>
<!--#if expr="$QUERY_STRING = /action=admin/" -->
<p>ModeAdministrator Aktif.</p>
<!--#else -->
<p>Mode Pengguna Standar.</p>
<!--#endif -->
</main>
<!--#include virtual="/includes/footer.html" -->
Penjelasan Atribut dan Parameter
Dalam menggunakan tag SSI, pemilihan atribut pada arahan tertentu menentukan bagaimana server mencari dan memproses sumber daya yang diminta:
- virtual: Menentukan jalur (path) URL relatif terhadap dokumen root server (misalnya:
/images/banner.jpg). Ini adalah metode yang paling direkomendasikan karena lebih fleksibel. - file: Menentukan jalur relatif terhadap direktori tempat file saat ini berada (misalnya:
../footer.htmlatausidebar.inc). Penggunaan ini dibatasi untuk mencegah akses direktori di luar batas aman. - encoding: Menentukan cara server melakukan enkripsi karakter pada output variabel (pilihan:
none,url, atauentityuntuk HTML entity encoding).
Konfigurasi Server untuk Mengaktifkan SSI
Sebelum tag SSI dapat berfungsi, server web harus dikonfigurasi untuk memprosesnya. Pada peladen Apache, modul mod_include harus aktif dan direktif konfigurasi berikut ditambahkan ke dalam berkas httpd.conf atau .htaccess:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Options +Includes
Jika menggunakan NGINX, pemrosesan SSI diaktifkan di dalam blok server atau location dengan menambahkan arahan berikut:
ssi on;
ssi_types text/html text/shtml;
Praktik Keamanan Penggunaan SSI
Meskipun berguna untuk menyederhanakan pengelolaan situs statis, SSI membawa risiko keamanan jika tidak dikonfigurasi dengan benar. Arahan exec sangat berpotensi dieksploitasi oleh penyerang jika mereka dapat mengunggah file yang berisi perintah sistem berbahaya. Oleh karena itu, administrator server umumnya menonaktifkan arahan exec secara permanen dan membatasi akses direktori dengan atribut file.