Konfigurasi Elemen Aman pada htmLawed
htmLawed adalah pustaka PHP yang digunakan untuk memfilter input HTML agar aman dari serangan Cross-Site Scripting (XSS) dan menjaga integritas struktur dokumen. Inti dari konfigurasi keamanan htmLawed terletak pada parameter $spec, yang menentukan elemen (tag) dan atribut apa saja yang diizinkan untuk diproses.
Secara default, htmLawed memiliki daftar elemen yang diizinkan. Namun, untuk kebutuhan spesifik aplikasi, Anda harus mendefinisikan ulang elemen tersebut menggunakan sintaks tag_name=attribute_list. Jika Anda tidak menentukan konfigurasi, htmLawed akan menggunakan kebijakan bawaan yang mungkin terlalu longgar atau terlalu ketat untuk kebutuhan Anda.
Sintaks Konfigurasi $spec
Parameter $spec menerima string yang mendefinisikan elemen dan atribut yang diizinkan. Format dasarnya adalah tag1=attr1,attr2;tag2=attr1. Berikut adalah tabel referensi untuk konfigurasi elemen umum:
| Kebutuhan | Konfigurasi $spec |
|---|---|
| Teks Dasar | p,br,b,i,u,strong,em |
| Link & Gambar | a=href,title;img=src,alt,width,height |
| List | ul,ol,li |
| Blok | div,blockquote,pre,code |
Implementasi Kode PHP
Berikut adalah contoh implementasi teknis untuk membatasi input hanya pada elemen yang ditentukan:
require 'htmLawed.php';
$input = '<p>Teks aman <script>alert(1)</script></p>';
// Konfigurasi: Hanya izinkan p, b, dan i
$config = array('spec' => 'p,b,i');
$output = htmLawed($input, $config);
echo $output; // Hasil: <p>Teks aman </p>Parameter Keamanan Penting Lainnya
Selain spec, terdapat parameter lain yang wajib diperhatikan untuk memperkuat keamanan:
deny_attribute: Daftar atribut yang dilarang (misal:onmouseover,onclick).safe: Jika diset ke1, htmLawed akan secara otomatis memblokir elemen berbahaya seperti<script>,<object>, dan<embed>.comment: Jika diset ke0, komentar HTML akan dihapus.
Tips Troubleshooting
- Elemen Hilang: Jika elemen yang Anda masukkan hilang, periksa apakah elemen tersebut sudah terdaftar di
$spec. - Atribut Dihapus: Pastikan atribut yang Anda butuhkan (seperti
hrefpadaa) sudah didefinisikan setelah tanda sama dengan (=). - Validasi Skema: htmLawed secara otomatis memvalidasi protokol URL (seperti
http,https). Jika Anda menggunakanjavascript:, htmLawed akan menghapusnya secara otomatis demi keamanan.