Node.js 회원가입시 패스워드 암호화하기 - bcrypt

ouneno·2023년 8월 10일
0

Node.js

목록 보기
5/7
post-thumbnail

당연한 말이지만, 암호를 Hash처리 한 후 DB에 저장하면 보안을 높일 수 있다.
암호를 Hash화 하는데 꽤 유명한 라이브러리 중 하나이기도 하고, 사용법도 어렵지 않아 가져와봤다.


bcrypt 라이브러리 설치

npm install bcrypt


💡 bcrypt 암호화

1. async

const bcrypt = require('bcrypt');
const saltRounds = 10;
const 유저가_적은_패스워드 = 's0/\/\P4$$w0rD';

2. To hash a password

bcrypt.hash(유저가_적은_패스워드, saltRounds, function(err, 해시화된암호) {
    // Store hash in your password DB.
    // DB에 암호화된 해시암호를 저장하면 된다.
});

▼ File

💻 join.ejs

<div>
  	<input type="text" id="id">
	<input type="password" id="password">
    <button id="register" type="submit">가입하기</button>
</div>

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

<script>
$('#register').click(()=>{
  
  const id = $('#id').val();
  const password = $('#password').val();
 
  $.ajax({
      url : '/member/register'
    , method : 'POST'
    , data : {id : id, password : password}
  }).done(result) => {
  	console.log('SUCCESS!!');
  });
  
});
</script>

💻 member.js

var router = require('express').Router(); // 나는 router를 사용했다.

const bcrypt = require('bcrypt'); 
const saltRounds = 10;

router.post('/register', async (req, res) => {
  
  const id = req.body.id;
  const password = req.body.password;
  
  bcrypt.hash(password, saltRounds, (err, hashPassword) => {
    try {
      	console.log('bcrypt SUCCESS')
      	db.collection('login').insertOne({ id : id, password : hashPassword }, (err, result) => {
          응답.send('저장완료');
        });
    } catch {
      	console.log('bcrypt FAIL')
    }
  });
  
});

❗️ bcrypt로 해시화 한 암호를 콘솔로 출력해봤다

  • Test이기 때문에 input type을 text로 설정했다.

❗️ 해시화된 암호 출력


❗️ MongoDB에 저장된 암호

🫱🏻 bcrypt GitHub 주소

profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

글 잘 봤습니다.

답글 달기