암호화가 필요한 이유? 만약 암호화를 하지 않고 사용자의 입력을 그대로(이를 평문이라고 한다) 저장하게 되면, 데이터베이스가 유출되었을 때 사용자의 비밀번호가 제3자에게 노출되게 되며, 이는 심각한 피해를 가져올 수 있다. 따라서 이러한 피해를 방지하기 위하여, 사용자의 비밀번호는 암호화를 거쳐 저장되어야 한다. 이번 포스팅에서는 그 중에서도 강력한 해시 알고리즘으로 유명한 bcrypt 를 이용해본다. 암호화된 패스워드의 생성 우선 bcrypt 모듈을 설치한다. npm i bcrypt 프로젝트에 적용하기 위해, 암호화된 비밀번호를 생성하는 간단한 함수를 구현해보았다. import { genSalt, hash } from 'bcrypt'; const saltRound = 10; const createHas..
서버가 실행될 환경이 개발 환경(development)인지 배포 환경(production)인지에 따라 별도의 코드가 실행되어야 할 일이 많다. 이 환경을 관리하는 방법에 대하여 알아보았다. 설정법 우선 node가 설치되어있어야 한다. (linux/mac 환경을 기준으로 하였다.) 개발 환경으로 설정하려면 다음과 같이 입력해주면 된다. export NODE_ENV=development 배포 환경으로 설정하려면 다음과 같이 입력해주면 된다. export NODE_ENV=production 사용법 node express 환경에서 설정된 NODE_ENV를 확인하는 방법은 다음과 같다. app.get("env") 따라서 별도의 config.json 파일을 생성해 환경에 따라 다른 객체를 반환하도록 한 뒤, { "..
미들웨어(middleware)? 미들웨어란, 특정 기능을 수행하는 함수이다. 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는다. (출처: express 공식 문서) Express 애플리케이션은 다음과 같은 유형의 미들웨어를 사용할 수 있다고 한다. 애플리케이션 레벨 미들웨어 라우터 레벨 미들웨어 오류 처리 미들웨어 기본 제공 미들웨어 써드파티 미들웨어 애플리케이션 레벨 미들웨어 app.use 또는 app.GET/POST 함수를 통해 작동하는 미들웨어 함수를 말한다. const func1 = (req, res, next) => { // req.id = 'not_panpan'; req.id = 'p..