Express Rate Limit
rate limit คือการกำหนดจำนวน request ขาเข้า ที่เกิดขึ้นในช่วงระยะเวลาหนึ่ง
ใช้แก้ปัญหา ddos attack, password reset, access rights
Stores การเก็บข้อมูล
- Memory Store คือ ใช้ memory ของตัวเครื่องเลย
- Redis Store ใช้ Redis (redis เป็น DB on memory)
- Memcached Store ใช้ Memcached (memcached เป็น DB on memory)
- Mongo Store ใช้ MongoDB (mongoDB เป็น Document Base)
Install ลงโปรแกรม
$ npm install --save express-rate-limit
Configuration options
- max กำหนดจำนวน request ในช่วงระยะเวลา windowMs
- windowMs ระยะเวลาที่ limit
- message ข้อความที่จะ response ถ้าถึง max
- statusCode ถ้าถึง limit จะ return http staus code 429
- headers มี default X-RateLimit-Limit, X-RateLimit-Remaining (ไม่ได้สำคัญอะไร)
- keyGenerator ปกติจะใช้ req.ip ก็คือ block ด้วย ip ถ้าอยาก block ด้วย userID ก็สามารถแก้ได้ที่ฟังก์ชั่นนี้
- handler ก็คือ เมื่อถึง limit จะเรียกฟังก์ชั่นนี้ โค้ดปกติก็คือ return response ไปเลย
แต่ถ้า เราอยากเพิ่ม log หรือเงื่อนไขอะไร flow อะไรก็ให้ทำที่นี่ - skip คือ ยกเว้นบางรายการ เช่น user admin ไม่ให้ติด limit