Express.js 자주 사용하는 모듈 모음

🪐 C:on·2021년 12월 16일
0
post-custom-banner

🔎 express

express는 노드js를 위한 간결한 웹프레임워크이다.
많은 프레임워크들이 express를 기반으로 동작한다.

설치

npm i express

사용법

import express from "express";

const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

json API

app.use(express.json([options]))

옵션을 변경하려면 이 문서를 참조하면된다.
기본적으로 필요한 옵션이 default로 설정되어 있기 때문에 보통은 단순히 express.json()로 사용한다.

🔎 cookie-parser

쿠키 파서는 헤더에 동봉된 쿠키 필드를 파싱한 뒤 req.cookies에 할당한다.

설치

npm i cookie-parser

사용법

import express from "express";
import cookieParser from "cookie-parser";
const app = express();
app.use(cookieParser());

🔎 CORS

cors에러가 발생하지 않도록 백엔드 서버는 응답 헤더에 Acess-Control-Allow-Origin와 값을 할당해줘야 한다. 추가적으로 옵션까지 설정해줘야 할 경우 작성이 번거러우며 휴먼에러가 발생할 가능성이 높아진다.

이러한 작업을 단순화시켜주는 모듈이 cors이다.

설치

npm i cors

사용법

import cors from "cors";
app.use(cors([options]));

options에는 cors헤더에 작성되는 옵션이 object형식으로 입력된다.

const corsOption = {
  origin: config.cors.allowedOrigin,
  optionSuccessStatus: 200,
  credentials: true,
};

app.use(cors(corsOption));

코드가 더러워지지 않도록 옵션 변수를 따로 정의해서 작성해주면 좋다.

🔎 morgan

morgan은 http 요청의 로그를 남겨주는 모듈이다.

설치

npm i morgan

사용법

app.use(morgan("tiny"))

tiny옵션은 간단한 로그를 남겨준다.
method와 url그리고 응답코드를 포함한다.

app.use(morgan("combined"))

combined 옵션을 사용하면 표준 Apache combined 로그를 출력한다.
좀 더 요청에 대한 구체적인 내용들을 로그로 남기는데 요청시간, 호스트의 sw 정보 등을 포함한다.

이외에도 common,dev,short 등의 옵션이 있다.

🔎 helmet

헤더를 사용한 보안은 헤더를 직접 작성해줌으로써 설정을 할 수 있다. 하지만 직접 작성하는 것은 휴먼에러를 일으킬 가능성이 높을 뿐더러 이 역시 노가다 작업이다.
helmet이 이러한 비효율성을 보완해준다.

helmet은 보안 관련 http헤더를 설정하는 더 작은 크기의 미들웨어 함수 9개를 모은것이다.

Helmet을 이용하면 HTTP 헤더를 적절히 설정하여 몇 가지 잘 알려진 웹 취약성으로부터 앱을 보호할 수 있다.

  • csp는 Content-Security-Policy 헤더를 설정하여 XSS(Cross-site scripting) 공격 및 기타 교차 사이트 인젝션을 예방
  • hidePoweredBy는 X-Powered-By 헤더를 제거
  • hsts는 서버에 대한 안전한(SSL/TLS를 통한 HTTP) 연결을 적용하는 Strict-Transport-Security 헤더를 설정
  • ieNoOpen은 IE8 이상에 대해 X-Download-Options를 설정
  • noCache는 Cache-Control 및 Pragma 헤더를 설정하여 클라이언트 측에서 캐싱을 사용하지 않도록 함
  • noSniff는 X-Content-Type-Options 를 설정하여, 선언된 콘텐츠 유형으로부터 벗어난 응답에 대한 브라우저의 MIME 가로채기를 방지
  • frameguard는 X-Frame-Options 헤더를 설정하여 clickjacking에 대한 보호를 제공
  • xssFilter는 X-XSS-Protection을 설정하여 대부분의 최신 웹 브라우저에서 XSS(Cross-site scripting) 필터를 사용하도록 함

설치

npm install helmet

사용법

import helmet from "helmet";

const app = express();

app.use(helmet());

옵션을 설정하지 않으면 csp, expectCt, hpkp, noCache, referrerPplicy는 적용되지 않는다.

app.use(helmet.noCache());
app.use(helmet.hpkp());

이런 방식으로 추가적인 보안 설정을 해줄 수 있다.

post-custom-banner

0개의 댓글