1. 에러 처리
모든 미들웨어와 라우트 핸들러에서 발생할 수 있는 에러를 처리하고 사용자에게 적절한 응답을 전달해야 함.
Express에서는 에러 처리 미들웨어를하여 중앙 집중식 에러 처리를 구현 가능
// 정상 처리 미들웨어 예시
app.get("/", (req, res, next) => {
// 에러 발생 시, next 함수에 에러를 전달합니다.
if (someError) {
return next(new Error("Something went wrong!"));
}
res.send("Hello World!");
});
// 에러 처리 미들웨어
app.use((err, req, res, next) => {
console.error(err);
res.status(500).send("Server encountered an error!");
});
2. 로깅
서버의 동작과 요청 처리 로그를 기록하고 관리해야 함.
morgan 이용해서 서버 console창에서 log 쉽게 확인 가능
npm install morgan
const morgan = require("morgan");
// 로깅을 위한 미들웨어 설정
app.use(morgan('combined')); // 배포환경일 때
// app.use(morgan('dev')); // 개발환경일 때
3. 보안
취약점을 최소화를 위해 보안 설정을 적용해야 함.
express에서는 helmet 미들웨어를 사용 기본적인 보안 설정을 적용 가능
(Express 사용시 Http 헤더 설정을 자동으로 바꾸어 웹 취약성으로부터 서버를 보호해주는 보안 모듈)
npm install helmet
const helmet = require("helmet");
// 보안 미들웨어
app.use(helmet());
app.use(helmet.noCache());
app.use(helmet.frameguard());
* 주의 : app.use(helmet()); 만 설정 할 경우 기본적인 보안(X-Powered-By 등)만 설정
csp, expectCt, hpkp, noCache, referrerPplicy는 별도로 설정 필요
4. 정적 파일
서버에서 정적 파일(이미지, 스타일시트, 스크립트 등)을 제공할 때 express.static 미들웨를 사용
app.use(express.static("public"));
5. 환경 변수와 설정 분리
애플리케이션의 환경별 설정(포트 번호, 데이터베이스 연결 정보 등)을 코드에서 분리하여 관리
dotenv 패키지를 사용하여 쉽게 구현 가능 (root 폴더에 .env 파일 생성하기)
npm install dotenv
/*.env*/
PORT=3000
require("dotenv").config();
const PORT = process.env.PORT
이렇게 주요 관심사에 맞게 코드와 설정을 분리하고, 미들웨어를 적절히 사용하면, 유지 관리가 쉬운 안전한 Node.js 서버를 구축할 수 있습니다.
반응형
'개발정리 (nodeJS)' 카테고리의 다른 글
[nodeJS] Node.js 개발에 흔히 사용되는 라이브러리 5개 (0) | 2023.06.13 |
---|---|
[nodeJS] nodemailer로 메일 보내기 (0) | 2023.06.12 |
[nodeJS] 초보자도 쉽게 따라할 수 있는 nodeJS로 ejs 사용하는 방법 (0) | 2023.06.10 |
[nodeJS] Nodemon으로 서버유지하기 (2) | 2023.06.09 |
[nodeJS] 초보자도 쉽게 따라할 수 있는 nodeJS로 서버 만들기 (0) | 2023.06.08 |