미들웨어(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' });
}