SSI Directives adalah instruksi berbasis teks yang disematkan ke dalam dokumen HTML untuk diproses oleh server web sebelum dikirimkan ke peramban pengguna. Instruksi ini menggunakan mekanisme Server Side Includes (SSI), sebuah fitur bawaan server seperti Apache dan Nginx yang memungkinkan penyisipan konten eksternal, pemanggilan variabel server, dan eksekusi skrip ringan tanpa memerlukan bahasa pemrograman backend yang kompleks seperti PHP atau Python.
Penggunaan utama SSI meliputi penyisipan komponen halaman yang berulang (seperti header, footer, atau menu navigasi), menampilkan tanggal dan waktu terkini, serta menyertakan hasil dari eksekusi program luar. Directives ini ditulis dalam format komentar HTML khusus dengan awalan <!--# dan diakhiri dengan -->, sehingga tetap aman dan tidak merusak tampilan visual halaman jika dilihat secara lokal.
Daftar Perintah SSI Directives Utama
Server web mengenali beberapa perintah inti (command) dalam SSI. Setiap perintah menggunakan atribut tertentu untuk mendefinisikan perilakunya di dalam dokumen.
| Perintah (Command) | Atribut Umum | Fungsi Utama |
|---|---|---|
include |
file, virtual |
Menyisipkan konten file lain (seperti header atau footer) ke dalam dokumen saat ini. |
echo |
var, encoding |
Menampilkan nilai dari variabel server yang aktif (misalnya tanggal atau alamat IP klien). |
set |
var, value |
Membuat atau menetapkan nilai baru pada variabel kustom yang ditentukan pengguna. |
flastmod |
file, virtual |
Menampilkan tanggal dan waktu modifikasi terakhir dari file yang ditentukan. |
fsize |
file, virtual |
Menampilkan ukuran file dalam byte, kilobyte, atau megabyte. |
exec |
cmd, cgi |
Menjalankan perintah cgi atau skrip sistem eksternal (memerlukan konfigurasi keamanan khusus). |
Contoh Implementasi Kode SSI
Berikut adalah contoh penggunaan beberapa SSI directives dalam sebuah file HTML standar:
<!--#config timefmt="%A, %d %B %Y" -->
<p>Hari ini adalah: <!--#echo var="DATE_LOCAL" --></p>
<!--#include virtual="/includes/header.html" -->
<main>
<h1>Selamat Datang di Situs Kami</h1>
<p>Halaman ini terakhir diperbarui pada: <!--#flastmod file="index.shtml" --></p>
</main>
<!--#include virtual="/includes/footer.html" -->
Atribut Path: file vs virtual
Saat menggunakan perintah include, flastmod, atau fsize, terdapat dua jenis atribut path yang harus dibedakan:
- virtual: Menggunakan jalur URL relatif terhadap dokumen root server (misalnya
/images/banner.jpg). Ini adalah metode yang paling sering direkomendasikan karena lebih fleksibel. - file: Menggunakan jalur relatif terhadap direktori tempat file saat ini berada (misalnya
../templates/nav.html). Penggunaan atribut ini dibatasi demi keamanan agar tidak keluar dari direktori yang diizinkan.
Konfigurasi Server untuk SSI
Agar server web membaca dan memproses SSI directives, ekstensi file biasanya harus diubah dari .html menjadi .shtml (Server Side HTML), atau Anda harus mengonfigurasi server untuk memparsing file .html standar (meskipun berdampak pada performa karena setiap file harus dipindai).
Konfigurasi pada Apache (.htaccess)
Tambahkan baris berikut ke dalam file .htaccess di direktori root situs Anda untuk mengaktifkan SSI:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes
Konfigurasi pada Nginx
Di dalam blok server file konfigurasi Nginx, tambahkan direktif ssi:
server {
listen 80;
server_name contoh.com;
root /var/www/html;
location / {
ssi on;
ssi_types text/html;
}
}
Praktik Keamanan Penggunaan SSI
Walaupun berguna untuk menjaga keringkasan kode, SSI menyimpan risiko keamanan jika tidak dikelola dengan benar, terutama pada perintah exec yang dapat mengeksekusi perintah sistem operasi secara langsung. Selalu nonaktifkan perintah exec di lingkungan produksi kecuali benar-benar dibutuhkan, dan batasi akses tulis pada file yang dapat disertakan untuk mencegah kerentanan injeksi kode oleh pihak yang tidak berwenang.