
helmet 과 bcrypt
bcrypt는 비밀번호를 해킹에 노출되지 않도록, Hashing을 하는 알고리즘을 뜻한다.
예를 들어, 웹페이지 유저가 처음에 가입을 했을 때, 사용자가 입력한 ID, Password를 입력한 문자 그대로 서버에 저장을 하면, 해킹에 노출되기 쉽다.
따라서 사용자 정보가 노출되지 않도록 bcrypt라는 것을 활용해서 보관한다.
helmet은 Express 애플리케이션에서 HTTP 헤더를 보안하는 미들웨어 패키지이다.
다른 말로 helmet은 여러 미들웨어 모듈을 합쳐 놓은 패키지 모듈이라고도 한다.
helmet을 사용하면 express 애플리케이션의 기본 보안 설정을 쉽게 적용할 수 있다.
이 말은 아래 사진에서 설명을 보충하겠다.
bcrypt 사용법
helmet을 사용하면 Express 애플리케이션의 기본 보안 설정을 쉽게 적용할 수 있다.
다음은 helmet을 사용하는 방법이다.


4번째 줄에서 hashSync안에 비밀번호에 해당하는 변수인 password를 넣고,
salt의 길이를 설정한다. 여기서 salt의 길이는 10으로 설정했다.
콘솔에 결과를 출력해보면 다음과 같은 값들이 나온다.

설정한 비밀번호가 나왔고, 비밀번호를 hashing한 값이 나오는 것을 확인할 수 있다.
여기서 $2b까지는 해싱을 하기 위해 사용한 알고리즘을 뜻한다.
$10의 10은 '복잡도'라고 해서 salt의 길이를 의미한다. 이 복잡도라는 것이 증가할수록 hash하는 시간도 급격히 늘어난다.
그런데 이게 늘어나면 좋지 않은게, hashing하는 것도 CPU를 사용하기 때문에, 성능 저하를 일으킬 수 있기 때문이다.
그래서 보통은 8~12사이를 추천한다고들 한다.

마지막으로 bcrypt.compare 함수를 활용해서 입력된 password와 저장된 hash값을 비교한다.

password와 hash값이 동일하면 true로 나오는 것을 확인할 수 있다.
helmet 사용법


Express에서 helmet을 사용하려면, require('helmet')을 호출하여 helmet 미들웨어를 가져와야 한다.
그리고 app.use(helmet())를 활용하여 Express 애플리케이션에 helmet을 미들웨어를 적용한다.
이렇게 하면 기본적인 보안 설정이 적용된다.