NodeJS 라이브러리

정홍섭·2023년 7월 30일
0

Backend

목록 보기
1/4
post-thumbnail

1. Express란?

Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다.

NodeJs는 Chrome의 V8엔진을 이용하여 javascript로 브라우저가 아니라 서버를 구축하고, 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)인데
Express는 이런 Nodejs의 원칙과 방법을 이용하여 웹애플리케이션을 만들기 위한 프레임워크이다.

1-1. Express사용 이유

Express는 프레임워크이므로 웹 애플리케이션을 만들기 위한 각종 라이브러리와 미들웨어 등이 내장돼 있어 개발하기 편하고, 수많은 개발자들에게 개발 규칙을 강제하여 코드 및 구조의 통일성을 향상시킬 수 있다. 그것이 바로 프레임워크 도입의 가장 큰 장점이다.

2. MYSQL2란?

전세계적으로 가장 널리 사용되고 있는 오픈소스 데이터베이스. 관계형 데이터베이스이다.

2-1. MySQL 데이터베이스의 특징

  1. 무료
  2. 처리되는 속도 빠름
  3. 대용량의 데이터 처리 가능
  4. 보안 뛰어남
    MySQL 은 세계에서 가장 인기있는 RDBMS 이다.

MySQL 을 사용하는 이유는

  1. 소규모부터 대기업에 이르기까지 무엇이든, 어디에서든 사용할 수 있다.
  2. 빠르고, 안정적이고, 사용하기 쉽다.
  3. 필요에 맞게 사용자 정의할 수 있는 많은 기능이 있다.

다양한 산업 분야에서 사용되며, 모든 요구사항에 맞게 조정할 수 있다.

3. bcrypt란?

1999년에 Niels Provos와 David Mazieres가 발표한 가장 강력한 단방향 비밀번호 해시 매커니즘 중 하나이다. C, C++, C#, Go, Java, PHP, Perl, Python, Ruby등의 언어를 지원한다.

3-1. 단방향 해시 함수

단방향 해시 함수는 수학적인 연산을 통해 원본 메세지를 변환하여 암호화된 메세지인 digest를 생성한다. 이 방식으로 암호화된 digest는 다시 평문으로 볼 수 없다.

문제점

1. 동일한 메세지가 동일한 digest를 생성하는 경우. 즉, 똑같은 비밀번호가 똑같은 해시값을 생성하는 경우

비밀번호별로 해당 digest(해시값)을 미리 저장한 테이블을 만들어 원본 비밀번호를 역추적하여 사용자의 비밀번호를 알아 낼 수 있다. 이와 같은 digest 목록을 담고 있는 테이블을 rainbow table이라고 하고 이 공격 방식을 rainbow attack이라고 한다.

2. 해시 함수의 빠른 처리 속도

사실 해시 함수는 짧은 시간에 데이터를 검색하기 위해 설계된 것이다. 따라서 공격자가 마음만 먹으면 임의의 digest를 대량으로 생성하여 사용자의 암호가 해시된 digest와 빠른 속도로 비교하여 원래의 비밀번호를 알아낼 수 있다.

솔팅 & 키 스트레칭

위와 같은 해시 함수들의 단점들을 보완하기 위해 솔팅(salting)이라는 기법과 키 스트레칭(key stretching) 기법이 사용된다.

솔팅

단방향 해시 함수에서 추가적으로 임의 길이의 문자열을 생성하여 digest를 생성한느 방법을 솔팅이라고 한다.

키 스트레칭

입력한 비밀번호의 digest를 생성하고, 생성된 digest를 입력 값으로 다시 digest를 계속 반복 생성하는 방법이다. 이 방법을 사용하면 공격자가 입력한 패스워드를 동일한 횟수만큼 해시해야만 digest의 일치 여부를 확인할 수 있다.

4. jsonwebtoken란?

인증에 필요한 정보들을 암호화 시킨 JSON 토큰을 의미
JWT 기반 인증은 JWT 토큰(Access Token)HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다

4-1. 구조

4-2. 기능

  • sign : jwt token 생성
  • verify : 토큰 인증하고 payload를 디코딩하여 데이터를 반환
  • decode: encoding된 토큰과 secret을 인자로 넘겨주면 디코딩 가능하다.

1개의 댓글

comment-user-thumbnail
2023년 7월 30일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기