[nodejs] REST API를 위한 IP 주소 필터링

웹 서비스는 공개 REST API를 제공할 때 보안을 고려해야 합니다. API 엔드포인트에 접근하는 클라이언트의 IP 주소를 필터링하여 안전한 접속을 유지할 수 있습니다. 이 튜토리얼에서는 Node.js와 Express를 사용하여 IP 주소 필터링을 구현하는 방법을 살펴보겠습니다.

단계 1: Express 앱 설정

먼저, Express 애플리케이션을 설정합니다. 아래는 Express 앱을 생성하고 기본 미들웨어를 추가하는 예제입니다.

const express = require('express');
const app = express();

// 기본 미들웨어 설정
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

단계 2: IP 주소 필터링을 위한 미들웨어 추가

다음으로, 클라이언트 IP 주소를 확인하여 허용되는 IP 주소 목록에 있는지 검사하는 미들웨어를 추가합니다.

const allowedIPs = ['192.168.1.1', '10.0.0.1'];

const checkIP = (req, res, next) => {
  const clientIP = req.ip;
  if (!allowedIPs.includes(clientIP)) {
    return res.status(403).send('접근 권한이 없습니다.');
  }
  next();
};

app.use(checkIP);

// 나머지 라우트와 미들웨어 설정
// ...

위의 예제에서는 checkIP 미들웨어를 만들어서 요청이 허용된 IP 목록에 있는지 확인합니다. 요청이 허용되지 않으면 403 Forbidden 상태 코드를 반환하고, 허용되면 다음 미들웨어 또는 라우트로 이동합니다.

결론

Node.js와 Express를 사용하여 REST API를 보호하기 위해 IP 주소 필터링을 구현하는 방법에 대해 살펴보았습니다. 클라이언트 IP 주소를 확인하여 안전한 접속을 제어할 수 있습니다.

이러한 작업의 추가 보안을 위해 디도스 공격 등으로부터 서버를 보호하고 클라이언트의 안전을 유지할 수 있습니다.

참고 자료