อธิบาย express-rate-limit

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