Rate-limiting (การจำกัดอัตราคำขอ) มีความสำคัญมากขึ้นเรื่อยๆ เพื่อป้องกันเว็บไซต์จากโจมตี DoS และ DDoS ป้องกันคำขอปลอม (fake requests) และการโจมตี brute force โดยการจำกัดจำนวนคำขอจาก IP เดียวกัน express-rate-limit เป็นแพ็กเกจ npm สำหรับวัตถุประสงค์นี้
การติดตั้ง
npm install --save express-rate-limit
ตัวอย่างการใช้งาน
สร้างไฟล์ rateLimit.js และรันด้วย node rateLimit.js
rateLimit.js
const express = require("express");
const rateLimit = require("express-rate-limit");
const app = express();
// กำหนดค่า rate limiter
const limiter = rateLimit({
max: 5, // จำนวนคำขอสูงสุด
windowMs: 60 * 60 * 1000, // ระยะเวลา 1 ชั่วโมง (มิลลิวินาที)
message: "Too many request from this IP" // ข้อความเมื่อเกิน limit
});
// ใช้ middleware กับทุก route
app.use(limiter);
// Route ตัวอย่าง
app.get("/", (req, res) => {
res.status(200).json({
status: "SUCCESS",
message: "Welcome to TutorialsPoint !"
});
});
// เริ่มเซิร์ฟเวอร์
const port = 8000;
app.listen(port, () => {
console.log(`app is running on port ${port}`);
});
การทดสอบ
- รันแอปพลิเคชัน
- เปิดเบราว์เซอร์ไปที่
https://localhost:8000 - ลองรีเฟรชเกิน 5 ครั้ง จะได้รับข้อความ error "Too many request from this IP"
หมายเหตุ: รูปภาพตัวอย่างผลลัพธ์ถูกละเว้นในเวอร์ชันนี้