Tahun baru, skill baru! 🚀. Masukkan kupon "skill2025" untuk diskon 30% di kelas apa saja

Logo Koala Skodev mengetik

Skodev

Belajar coding dalam bahasa Indonesia

MEMBUAT RATE LIMITING SEDERHANA DI NODE.JS

Pelajari cara membuat rate limiting sederhana di Node.js untuk mengontrol jumlah permintaan yang dapat dilakukan dalam jangka waktu tertentu, meningkatkan keamanan aplikasi.

Untuk menghindari server terlalu banyak permintaan bertumpuk, kita bisa menggunakan rate limiting. Ini adalah teknik yang membatasi jumlah permintaan yang bisa dilakukan ke server dalam jangka waktu tertentu. Mari kita belajar cara membuat rate limiting sederhana di Node.js.

Langkah-langkah Membuat Rate Limiting

1. Menggunakan Middleware

Pertama, kita akan menggunakan middleware untuk memantau dan mengontrol jumlah permintaan. Middleware ini akan diperiksa setiap kali ada permintaan yang masuk ke server.

const rateLimit = (req, res, next) => {
  const userIP = req.ip;  // Mengidentifikasi pengguna berdasarkan IP
  const currentTime = Date.now();

  if (!userRequests[userIP]) {
    // Jika pengguna IP baru, buat data baru
    userRequests[userIP] = [];
  }

  // Hapus entri permintaan yang sudah lama
  while (userRequests[userIP].length && currentTime - userRequests[userIP][0] > TIME_FRAME) {
    userRequests[userIP].shift();
  }

  if (userRequests[userIP].length >= MAX_REQUESTS) {
    // Jika jumlah permintaan lebih dari batas
    res.status(429).send('Terlalu banyak permintaan, coba lagi nanti.');
  } else {
    userRequests[userIP].push(currentTime);
    next();
  }
};

2. Mengaplikasikan Middleware

Gunakan middleware tersebut pada aplikasi Node.js kamu. Ubah app dan router sesuai kebutuhan.

const express = require('express');
const app = express();

const TIME_FRAME = 60000; // 1 menit
const MAX_REQUESTS = 5;   // Maksimal 5 permintaan

const userRequests = {};

app.use(rateLimit);

app.get('/', (req, res) => {
  res.send('Halo, dunia!');
});

3. Uji Coba dan Optimasi

Setelah menyusun rate limiter, lakukan uji coba untuk memastikan berfungsi dengan baik:

  • Kirim permintaan lebih dari batas yang diizinkan dalam periode waktu tertentu.
  • Amati apakah server merespon dengan batasan yang tepat.

Kesimpulan

Dengan rate limiting, kamu bisa memastikan server tetap stabil dan tidak mengalami overload karena terlalu banyak permintaan bertumpuk. Ini bisa menjadi langkah awal yang baik untuk meningkatkan keamanan dan kinerja aplikasi Node.js yang kamu buat. Jangan lupa untuk terus mengoptimasi dan menyesuaikan limit sesuai kebutuhan aplikasi kamu!


Daftar newsletter skodev masukkan emailmu untuk dapat informasi menarik dari dunia koding