-
Notifications
You must be signed in to change notification settings - Fork 1
LIBRARY
세션 방식은 서버의 메모리 내부에 유저의 정보를 저장한다. 유저의 수가 증가할수록 세션의 양이 많아지는 만큼 메로이에 부하가 걸릴 수 있어 JWT 토큰 인증 방식을 이용하였다. JWT는 서버의 메모리에 저장 공간을 확보하지 않고 토큰 발급 및 확인 절차만 거치므로 서버 자원과 비용을 절감할 수 있다.
비밀번호를 해시 암호화해 저장하는 모듈로 기존 bcrypt 사용하였으나 잦은 에러 발생으로 알아보니, bcrypt는 C++기반의 node 라이브러리로 사용을 위해서 OS에 python과 C++등이 설치되어야 한다. 노트북을 변경하면서 순수 자바스크립트만 설치되어 있기에 이에 비슷한 모듈을 찾다 javascript로만 만들어진 bcryptjs를 설치하여 진행했다.
서버에서 다양한 HTTP 헤더를 자동 설정을 통해 서버 어플리케이션의 보안을 강화해주는 대표적은 노드 보안 모듈이다. 적용 전 Response Headers에는 Server와 X-Powered-By 헤더가 노출되어 서버에서 사용중인 웹 서버 소프트웨어의 종류를 알기 쉽다. 밑의 사진은 helmet을 적용 후의 Response Headers이다. Server와 X-Powered-By 헤더의 정보가 사라져 해커에게 제공될 수 있던 서버의 주요 정보가 대부분 사라졌다. 헤더를 숨긴다고 하여 보안이 완벽한 것은 아니지만 잠재적으로 취약한 기술이 있는지 파악하는 것을 어렵게하여 공격의 전체적인 진행을 약간 늦추는 정도의 효과를 발휘한다.
서버의 로그 관리를 위한 미들웨어이며, 서비스 동작 상태 파악을 위해 사용하였다. 로그에 나오는 에러 코드와 IP를 확인하여 요청의 성공 여부를 파악하기 편리하다.