¿Cómo integrar Express-rate-limit en Node.js?

La limitación de velocidad evita que una misma IP realice demasiadas requests, lo que nos ayudará a prevenir ataques como el de fuerza bruta. express-rate-limit es el paquete npm para limitar la solicitud del usuario.

Configuración del proyecto: ejecute los siguientes conjuntos de comandos para crear una carpeta e inicializar el proyecto. 

mkdir test-project
cd test-project
npm init -y

Instalación del módulo: ejecute el siguiente comando para instalar el módulo express y express-rate-limit:

npm i express express-rate-limit

Directorio del proyecto: la estructura del proyecto se verá así:

app.js

// Express is node framework that helps 
// in setting up the server and routing.
const express = require("express");
  
// The express-rate-limit is for 
// limiting the incoming request.
const rateLimit = require("express-rate-limit");
  
// App variable store the express module.
const app = express();
  
// Creating a limiter by calling rateLimit function with options:
// max contains the maximum number of request and windowMs 
// contains the time in millisecond so only max amount of 
// request can be made in windowMS time.
const limiter = rateLimit({
    max: 100,
    windowMs: 60 * 60 * 1000,
    message: "Too many request from this IP"
});
  
// Add the limiter function to the express middleware
// so that every request coming from user passes 
// through this middleware.
app.use(limiter);
  
// GET route to handle the request coming from user
app.get("/", (req, res) => {
    res.status(200).json({
        status: "success",
        message: "Hello from the express server"
    });
});
  
// Server Setup
const port = 8000;
app.listen(port, () => {
    console.log(`app is running on port ${port}`);
});

Ejecute el archivo app.js con el siguiente comando:

node app.js

Salida: Veremos la siguiente salida en la pantalla del terminal.

app is running on http://localhost:8000/
  • Salida cuando una solicitud no excede el límite máximo del limitador de tasa:

  • Salida cuando una solicitud excede el límite máximo del limitador de velocidad:

El encabezado del objeto de respuesta tiene 2 campos X-RateLimit-Limit y X-RateLimit-Remaining que almacena la solicitud máxima y restante del usuario:

Publicación traducida automáticamente

Artículo escrito por rahulshanker y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *