Validasi Input Express Validator untuk Keamanan Aplikasi Node.js

Express-validator adalah sekumpulan middleware Express.js yang membungkus kumpulan validator dan sanitizer ekstensif dari validator.js. Library ini memungkinkan Anda memvalidasi serta membersihkan data permintaan (request) pada aplikasi web untuk memastikan konsistensi dan keamanan data sebelum dipercaya oleh server.

Dalam pengembangan aplikasi berbasis Node.js dan Express, mengamankan endpoint dari input pengguna yang tidak valid adalah langkah krusial. Dengan memanfaatkan aturan bawaan seperti body(), isEmail(), dan isLength(), proses verifikasi data dapat dilakukan secara terstruktur dan efisien.

Mengenal Komponen Utama Express-Validator

Library ini bekerja dengan cara menyaring data yang masuk melalui objek permintaan HTTP, seperti req.body, req.query, req.params, req.headers, dan req.cookies. Berikut adalah tabel fungsi validasi dan sanitasi yang paling sering digunakan dalam pengembangan:

Fungsi / Metode Kategori Deskripsi Kegunaan
body(field) Target Menentukan properti di dalam req.body yang akan divalidasi.
isEmail() Validator Memeriksa apakah string masukan memiliki format alamat email yang valid.
isLength({ min, max }) Validator Memverifikasi panjang karakter dari string masukan sesuai batas minimum dan maksimum.
escape() Sanitizer Mengganti karakter khusus HTML (seperti <, >, &) untuk mencegah serangan XSS.
validationResult(req) Eksekusi Mengambil hasil validasi dari objek permintaan untuk diperiksa status error-nya.

Penerapan Kode Validasi pada Express Endpoint

Untuk mengimplementasikan validasi input pada endpoint Express, Anda perlu mengimpor modul yang diperlukan, menentukan aturan validasi pada rute, dan memeriksa hasilnya menggunakan validationResult.

const express = require('express');
const { body, validationResult } = require('express-validator');

const app = express();
app.use(express.json());

app.post('/register', [
  // Validasi email harus sesuai format dan sanitasi dengan dinormalisasi
  body('email').isEmail().normalizeEmail(),
  // Validasi password minimal memiliki panjang 6 karakter
  body('password').isLength({ min: 6 })
], (req, res) => {
  // Tangkap hasil validasi
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() });
  }

  // Lanjutkan proses jika data valid
  res.send('Registrasi berhasil dan data valid!');
});

app.listen(3000, () => {
  console.log('Server berjalan di port 3000');
});

Langkah Teknis Implementasi Lapangan

  1. Instalasi Paket: Jalankan perintah npm install express-validator melalui terminal pada direktori proyek Node.js Anda.
  2. Impor Modul: Panggil fungsi validasi yang dibutuhkan seperti body dan validationResult dari paket express-validator.
  3. Definisikan Middleware Rute: Masukkan aturan validasi sebagai parameter tengah (middleware) sebelum fungsi handler endpoint dijalankan.
  4. Pemeriksaan Error: Selalu evaluasi validationResult(req) di awal handler untuk menghentikan eksekusi jika ditemukan data yang tidak sesuai.

Dengan menerapkan validasi input yang ketat menggunakan express-validator, aplikasi web Anda akan terlindung dari berbagai celah keamanan injeksi data serta memastikan bahwa hanya data bersih dan valid yang masuk ke dalam sistem basis data.