htmLawed adalah pustaka (library) PHP ringan yang berfungsi untuk menyaring, membersihkan (sanitize), dan memeriksa kode HTML agar sesuai dengan standar serta aman dari kerentanan keamanan seperti Cross-Site Scripting (XSS). Pustaka ini dikemas dalam satu file PHP tunggal, membuatnya sangat mudah diintegrasikan ke dalam berbagai kerangka kerja (framework) maupun aplikasi PHP murni tanpa memerlukan dependensi eksternal yang rumit.
Untuk menggunakan htmLawed, Anda cukup mengunduh file sumber utamanya dari direktori resmi atau melalui manajer paket Composer, lalu memuatnya ke dalam skrip PHP Anda. Fungsi inti yang digunakan adalah htmLawed() yang menerima tiga parameter utama: teks HTML masukan, array konfigurasi, dan array pengaturan spesifik.
Instalasi dan Penggunaan Dasar
Cara paling mudah untuk mendapatkan pustaka htmLawed adalah melalui Composer atau dengan mengunduh file htmLawed.php secara langsung dari repositori resmi. Berikut adalah contoh implementasi dasar dalam kode PHP untuk membersihkan input HTML dari pengguna:
<?php
// Memuat pustaka htmLawed
require_once 'htmLawed.php';
// Input HTML mentah dari pengguna yang berpotensi berbahaya
$raw_html = '<p>Halo Dunia!</p><script>alert("XSS Attack");</script><a href="javascript:alert(1)">Klik</a>';
// Menjalankan fungsi htmLawed dengan konfigurasi default
$clean_html = htmLawed($raw_html);
echo $clean_html;
// Output bersih: <p>Halo Dunia!</p>Klik
?>
Parameter dan Konfigurasi Penting
htmLawed menyediakan puluhan parameter konfigurasi yang dapat disesuaikan untuk memperketat atau melonggarkan aturan penyaringan tag dan atribut HTML. Tabel di bawah ini merangkum parameter konfigurasi yang paling sering digunakan dalam pengembangan aplikasi web.
| Parameter Konfigurasi | Tipe Data | Fungsi Utama |
|---|---|---|
elements |
String | Menentukan tag HTML apa saja yang diizinkan (contoh: *+strong atau p,br,a). |
safe |
Integer (0/1) | Jika disetel ke 1, otomatis menonaktifkan elemen dan atribut yang berisiko XSS tinggi. |
deny_attributes |
String | Menolak atribut tertentu pada elemen HTML (contoh: style,onclick). |
hook |
String/Function | Nama fungsi kustom yang dipanggil untuk pemrosesan tambahan pada elemen HTML. |
keep_bad |
Integer (0/1/2/3) | Mengatur bagaimana pustaka menangani kode HTML yang tidak valid atau dilarang. |
Contoh Penerapan Konfigurasi Lanjutan
Dalam penerapan nyata, Anda sering kali perlu membatasi tag HTML yang boleh dimasukkan oleh pengguna, misalnya hanya mengizinkan format teks tebal, miring, tautan, dan paragraf, serta mengaktifkan mode aman agar atribut berbahaya seperti onload atau onclick otomatis dihapus.
<?php
require_once 'htmLawed.php';
$input = '<div onclick="stealCookie()">Teks<script>alert(1);</script></div>';
$config = array(
'safe' => 1, // Mengaktifkan mode aman
'elements' => 'p, b, i, a, em, strong',
'deny_attributes' => 'style'
);
$spec = ''; // Pengaturan spesifikasi tambahan jika diperlukan
$output = htmLawed($input, $config, $spec);
echo $output;
// Hasil: <p>Teks</p> (Tag div, script, dan atribut berbahaya dibersihkan)
?>
Troubleshooting dan Tips Lapangan
Ketika mengintegrasikan htmLawed ke dalam proyek PHP, beberapa kendala teknis sering ditemui oleh pengembang. Berikut adalah solusi praktis untuk mengatasinya:
- Karakter Unicode atau UTF-8 Berantakan: Pastikan dokumen PHP dan konfigurasi server Anda menggunakan enkoding UTF-8. htmLawed mendukung UTF-8 secara penuh jika lingkungan PHP dikonfigurasi dengan benar.
- Tautan Eksternal Bermasalah: Jika Anda ingin memaksa semua atribut
target="_blank"pada tag<a>memiliki atribut keamanan tambahan sepertirel="noopener", gunakan fungsi hook kustom atau lakukan manipulasi string tambahan setelah proses htmLawed selesai. - Kinerja Eksekusi: Karena htmLawed ditulis murni dalam PHP dan sangat dioptimalkan, kinerjanya sangat cepat untuk ukuran teks standar forum atau kolom komentar. Untuk dokumen berukuran sangat besar, lakukan sanitasi sebelum data disimpan ke database (input filtering), bukan saat data ditampilkan.