본문 바로가기

Back-End/Node.js

[Node.js] express-rate-limit 모듈 사용하기

728x90

 

서버에 DoS (Denial of Service) 공격이 발생해 이용 중인 파이어베이스에 비정상적인 요청으로 인한 불필요한 과금이 발생하는 것을 방지하기 위해 Node.js 모듈 중 express-rate-limit 을 사용해보겠습니다.

 

터미널에 아래와 같이 입력하여 해당 모듈을 설치합니다.

npm install express-rate-limit

 

단위 시간동안 특정 ip 주소에서 들어오는 request 수를 제한하는 모듈로서, 옵션을 다음과 같이 설정할 수 있습니다.

1) 모든 요청에 대해 적용

var app = require('express');
var rateLimit = require('express-rate-limit');

app.use(rateLimit({
    windowMs: 60*1000, // 기준 시간
    max: 100, // 허용 횟수
    delayMs: 1000, // 호출 간격
    handler(req, res) { // 제한 초과 시 콜백 함수
    	res.status(429).json({
            code: 429,
            message: `모든 요청에 대해 1분에 100번만 요청할 수 있습니다.`
        });
    }
}));

 

2) 특정 end point 에 대해 적용

var app = require('express');
var rateLimit = require('express-rate-limit');

app.use('/api/', rateLimit({
    windowMs: 60*1000, // 기준 시간
    max: 100, // 허용 횟수
    delayMs: 1000, // 호출 간격
    handler(req, res) { // 제한 초과 시 콜백 함수
    	res.status(429).json({
       	    code: 429,
            message: `모든 요청에 대해 1분에 100번만 요청할 수 있습니다.`
        });
    }
}));
728x90

'Back-End > Node.js' 카테고리의 다른 글

[Node.js] 파이어베이스 Realtime Database 연동  (0) 2023.01.12