본문 바로가기

개발/JavaScript

[Node.js] 정보보호, Bcrypt

 

Git에 mongoDB URI 등 보호할 정보 숨기기

 

1. config 폴더 생성

2. dev.js에 개발단계에서 사용하는 정보 저장

3. prod.js에 배포 시에 사용될 정보 저장

module.exports = {
  mongoURI: process.env.MONGO_URI
}

4. key.js에 조건 설정

if(process.env.NODE_ENV == 'production') {
  module.exports = require('./prod');
} else {
  module.exports = require('./dev');
}

5. index.js

const config = require('./config/key')
...
const mongoose = require('mongoose')// mogoose: nodejs와 mongoDB 연결하는 ODM
mongoose.connect(config.mongoURI)// URI 숨기기
.then(() => console.log('MongoDB Connected...'))
.catch(err => console.log(err))
...

* gitignore에 dev.js 추가

 

 

 

Bcrypt

https://www.npmjs.com/package/bcrypt

 

bcrypt

A bcrypt library for NodeJS.. Latest version: 5.0.1, last published: a year ago. Start using bcrypt in your project by running `npm i bcrypt`. There are 3401 other projects in the npm registry using bcrypt.

www.npmjs.com

- 비밀번호를 암호화 하여 데이터베이스에 저장

암호화가 안된 모습

npm install bcrypt

1. Register Route

2. 유저 정보를 저장하기 전에 암호화 코드 작성: User.js에 pre() 작성

    (1) salt 설정

const bcrypt = require('bcrypt');
const saltRounds = 10;// salt 글자 수

  (2) salt와 hash를 생성 -> salt를 이용하여 비밀번호 암호화

userSchema.pre('save', function(next) { // User 저장 전에 처리할 내용

  const user = this;

  if(user.isModified('password')) {// 비밀번호 변경 시에만 암호화
     // 비밀번호 암호화
    bcrypt.genSalt(saltRounds, function(err, salt) {
      if(err) return next(err)

      bcrypt.hash(user.password, salt, function(err, hash) { // hash: 암호화된 비밀번호
        if(err) return next(err)
        user.password = hash;
        next(); //다음 동작 호출
      });
    });
  } else {
    next();
  }

});

postman test
암호화 완료

'개발 > JavaScript' 카테고리의 다른 글

[Node.js] Auth route, Logout Route  (0) 2022.07.22
[Node.js] login route  (0) 2022.07.22
[Node.js] npm, express, mongoDB, 라이브러리  (0) 2022.07.21
[바닐라 JS] PaintJS - Fill, Save  (0) 2022.04.04
[바닐라 JS] PaintJS - color, brush  (0) 2022.04.03