ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Bcrypt] - 비밀번호 암호화
    React/프로젝트 2022. 1. 21. 18:55

     

    회원가입 비밀번호 암호화 전
    회원가입 비밀번호 암호화 형태

     

    회원정보 저장 시 비밀번호 암호화
    • Bcrypt
      • 현재 가장 강력한 해시 메커니즘 중 하나
      • blowfish암호화에 기반을 두고 있다.
      • 보안에 집착하기로 유명한 OpenBSD에서 사용하고 있다.
      • 반복횟수를 늘려 연산속도를 늦출 수 있어 연산 능력이 증가하더라도 brute-forece공격에 대비
    • Bcrypt download
      • npm install bcrypt --save
    • Bcrypt 참고문서
    • 구현 순서
      • User정보를 저장(save)하기 전 비밀번호 암호화
      • Salt생성 후 Salt를 이용해서 비밀번호 암호화 
        • // User.js ( model )
          userShema.pre("save", funtion(next) { 
              // hash 구현
              next()
          });
      • 암호화가 끝난 후 User 정보(save) 저장 진행 => next( )
    •  구현
      • // Usage
        
        const bcrypt = require("bcrypt");
        const saltRounds = 10;
        
        bcrypt.genSalt(saltRounds, function(err, salt) {
            bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
            // myPlaintextPassword : 실제(순수) 비밀번호
                // Store hash in yout password DB
            });
        });
      • // Project
        
        userShema.pre("save", function(next) {
            var user = this;
            
            if(user.isModified("password")) { // password가 수정될 때만
                bcrypt.genSalt(saltRounds, function(err, salt) {
                    if(err) return next(err);
                    
                    bcrypt.hash(user.password, salt, function(err, hash) {
                        if(err) return next(err);
                        user.password = hash;
                        next(); // 암호화 끝난 후 정보 저장 ("save")
                    });
                });
            } else {  // pasword가 수정되지 않았다면 암호화처리 pass
                next();
            }
        });

    'React > 프로젝트' 카테고리의 다른 글

    [auth - middleware]  (0) 2022.01.24
    [로그인]  (0) 2022.01.24
    [Nodemon]  (0) 2022.01.21
    [express.Router]  (0) 2022.01.20
    [bodyParser]  (0) 2022.01.20
Designed by Tistory.