미들웨어(securityMiddleware.js)

import helmet from "helmet";
import cors from "cors";
import rateLimit from "express-rate-limit";

export const securityMiddleware = (app) => {
  app.use(helmet()); // 기본적인 보안 헤더 설정
  app.use(cors({ origin: "*" })); // 필요 시 도메인 제한
  app.use(express.json());

  const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15분
    max: 100, // IP당 최대 요청 수
    message: "Too many requests from this IP",
  });

  app.use(limiter);
};

2. JWT 인증 (auth.js)

import { verifyToken } from '../utils/jwt.js';

export const authMiddleware = (req, res, next) => {
  const authHeader = req.headers.authorization;
  if (!authHeader) return res.status(401).json({ message: 'Unauthorized' });

  const token = authHeader.split(' ')[1];
  const decoded = verifyToken(token);
  if (!decoded) return res.status(401).json({ message: 'Invalid token' });

  req.user = decoded;
  next();
};

3. 에러 핸들러 (errorHandler.js)

export default function errorHandler(err, req, res, next) {
  console.error(err.stack);
  res.status(500).json({ message: 'Internal Server Error' });
}