본문 바로가기
Back-End/node.js

Express app 구현 시 주의해야 할 보안 관련 이슈

by blackjack_96 2022. 3. 4.

# 본 게시물은 egoing님의 생활코딩 강의를 듣고 정리한 내용입니다

 

Express 홈페이지 상단의 Advanced topics 탭에 보면

app을 구현할 때 주의해야 할 보안관련 사항들이 있습니다.

 

Production Best Practices: Security

 

1. Don’t use deprecated or vulnerable versions of Express

- 항상 최신 Express버전만을 이용할 것.

2. Use TLS

- http가 아닌, https를 이용하여 암호화된 내용을 전송

3. Use Helmet

- Helmet모듈을 이용하여 Well-know vulnerability들을 보완할 것.

$ npm install --save helmet
// helmet모듈을 설치

 

// ...

const helmet = require('helmet') // helmet 모듈 import
app.use(helmet())		// middleware를 서버 앱에게 적용

// ...

 

이렇게 해주면

서버 앱이 HTTP Response를 보낼 때

Response Header에 특수한 설정을 해 보냄으로써

well-known web vulnerabilities들을 방지해준다고 합니다.


4. Use cookies securely

- 쿠키는 보안과 관련한 매우 중요한 사항이므로 추후 게시물을 통해 다루겠습니다.


5. Prevent brute-force attacks against authorization

- Captcha, Re-Captcha, 또는 특정 횟수 로그인 실패 시 제약을 주는 등의 설정을 하여

Brute force공격을 방지하라는 의미인 것 같습니다.


6. Ensure your dependencies are secure

- 직역하면 dependencies들을 안전하게 관리하라는 의미입니다.

Application내 package.json파일을 보면

객체 내부의 dependencies 프로퍼티의 value로

"설치된 모듈" = "버전 정보" 정보가 있습니다.

package.json파일 내 객체의 dependencies 프로퍼티

사용하고 있는 모듈은 항상 최신 버전을 유지해야 합니다.

outdate된 버전을 이용하면

그 버전에 해당하는 Well-kenow vulnerability가 발생하니까요.

 

$ snyk test

snyk라는 모듈을 설치하고

서버 앱이 있는 디렉토리에서 위 명령어를 실행하면

자동으로 app내부에 import된 여러 모듈들을 분석하여

취약한 점이 있는지 탐지해준다고 합니다.