Cara Melakukan HTML Escape pada String di Node.js

Metode Efektif HTML Escape di Node.js

Untuk melakukan HTML escape pada string di Node.js guna mencegah serangan Cross-Site Scripting (XSS), cara paling aman dan efisien adalah menggunakan pustaka (library) pihak ketiga yang teruji. Jangan pernah mencoba melakukan escape secara manual menggunakan regex sederhana karena rentan terhadap celah keamanan yang tidak terduga.

Library standar industri yang direkomendasikan adalah he (HTML Entities) atau lodash. Berikut adalah implementasi teknis menggunakan pustaka tersebut.

1. Menggunakan Library 'he'

he adalah pustaka yang sangat ringan dan spesifik untuk encoding/decoding entitas HTML.

// Instalasi: npm install he
const he = require('he');

const rawString = '';
const escapedString = he.encode(rawString);

console.log(escapedString);
// Output: <script>alert("xss")</script>

2. Menggunakan Library 'lodash'

Jika proyek Anda sudah menggunakan lodash, Anda tidak perlu menambah dependensi baru.

// Instalasi: npm install lodash
const _ = require('lodash');

const rawString = '
Hello & World
'; const escapedString = _.escape(rawString); console.log(escapedString); // Output: <div>Hello & World</div>

Tabel Perbandingan Metode Escape

MetodeKelebihanKekurangan
heSangat spesifik, ringan, mendukung banyak entitasPerlu instalasi tambahan
lodashMultifungsi, standar industriUkuran library lebih besar
Regex ManualTanpa dependensiSangat berisiko, tidak aman untuk produksi

Mengapa Harus Melakukan Escape?

HTML Escape mengubah karakter khusus menjadi entitas HTML yang aman untuk dirender oleh browser. Karakter seperti <, >, &, ", dan ' akan dikonversi agar browser tidak mengeksekusinya sebagai kode HTML atau JavaScript. Tanpa proses ini, input pengguna yang tidak divalidasi dapat disisipkan ke dalam DOM, yang memungkinkan penyerang mencuri cookie atau melakukan tindakan atas nama pengguna.

Tips Keamanan Tambahan

  • Selalu Escape pada Output: Lakukan escape tepat sebelum data dirender ke dalam HTML.
  • Gunakan Content Security Policy (CSP): Tambahkan header CSP untuk membatasi eksekusi skrip yang tidak sah.
  • Validasi Input: Selain melakukan escape, selalu lakukan sanitasi dan validasi input di sisi server (server-side validation).
  • Gunakan Template Engine yang Aman: Gunakan engine seperti EJS, Pug, atau Handlebars yang secara default melakukan auto-escaping pada variabel yang dirender.