Enjoy Programming

Express (Node.js) - middleware : Morgan, helmet, bodyparser, cookieparser 본문

JavaScript/Node.JS

Express (Node.js) - middleware : Morgan, helmet, bodyparser, cookieparser

LEETAEEON 2021. 4. 7. 14:15

필요한 미들웨어들을 설치하기 전에 express에 대한것을 다시 짚고 넘어가자

express 의 주요기능에는

1. 미들웨어 - 함수를 효과적으로 배열하는 미들웨어 스텍

2. 라우팅 - HTTP method로 특정 URL을 방문할 때만 함수가 호출 됨

3. request/ response 에 대한 확장 - response.redirect() or response.sendFile() 처럼 확장 가능

4. 뷰 - 뷰를 사용해서 HTML을 동적으로 랜더링 할 수 있음(pug, ejs등)

 

먼저 로그를 관리하기 위한 Nodejs의 미들 웨어인 morgan을 설치해보자

npm install morgan 

그리고 import morgan from "morgan";으로 임포트 해주고

app.use(morgan("dev"));를 해주자

이러면 클라이언트에 접속시 정보가 뜨게 된다. 로그 관리가 쉬워진다.

format은 dev, combined, common등등이 있다 

 

node.js의 보안설정을 위한 helmet을 설치

helmet을 설치하면 이런 미들웨어로 이루어져 있다고 한다

 

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

 

어렵다 ㅋㅋㅋ 일단 사용해보자 보자... 하다보면 알게 되겠지

역시 npm으로 설치하고 임포트 해준다. 그리고 app.use로 사용해준다.

 

이어서 요청된 쿠키를 쉽게 추출해주는 미들웨어인 cookie-parser를 설치

역시 npm install cookie-parser로 설치해주고 임포트 해준다

주로 cookie의 유저정보를 저장하여 session을 핸들링 할 수 있게 해준다고 한다.

 

마지막으로 body-parser! 클라이언트의 POST reqeust data의 body로부터 파라미터를 편리하게 추출하게 한다.

역시 npm install body-parser로 설치해주고 임포트 해줬다

해주고 app.use(bodyparser.json()); app.use(bodyparser.urlencoded({extended : true}));

로 미들웨어 설정을 해줬다..

 

 

근데 문제가 생겼다

콘솔에 body-parser deprecated라고 뜬다.. 바디파서 쓰지 말란다...

알아보니 최근에 express 4.16버전 이후로 바디파서가 빌트인 되어 있다고 한다.

그래서 권장하지 않는 거다.

그럼 위에 미들웨어 설정시 bodyparser를 express로 바꿔주면 된다. 이렇게 해결!!

이렇게 작성해주자, 그리고 명심하자 순서를! 위에서부터 아래로 작동된다.

쿠키파서 실행하고 바디파서로 읽어들이고 헬멧으로 보안해주고 마지막으로 모간으로 모든 로그 확인.

 

 

자 어렵다 근데 이해는 되긴 한다 ㅋㅋ 시작해보자

 

'JavaScript > Node.JS' 카테고리의 다른 글

Express (Node.js) MVC pattern  (0) 2021.04.09
Express (Node.js) Core : Routing  (0) 2021.04.08
Express (Node.js) - middleware  (0) 2021.04.07
Babel and nodemon  (0) 2021.04.07
Express (Node.js) route  (0) 2021.04.06