playground_avec coding

기밀 정보를 보호하는 방법 2가지 본문

front-end/node.js

기밀 정보를 보호하는 방법 2가지

Nat 2021. 6. 9. 22:09

1. 비밀정보를 따로 빼 둔다.

1.Process.env.NODE_ENV

  Local 환경일 때,  -development 모드   

>> config 폴더를 생성하여 그 안에 dev.js 라는 파일을 만들어 관리한다. 

git 커밋하여 푸시해 배포할 때, index.js  에 써놓은 기밀정보가 노출될 수 있음으로,  mongoose password를 dev.js 에 따로 빼 두어 관리한다. 

 

  Deploy (배포)  

- production 모드
>> heroku 사이트에서 관리해줘야 하는 환경


 

config 폴더 안에 dev.js 파일, prod.js 파일, key.js파일을 생성한다.

몽구스 문법으로 연결되었을 때, config 안에 mongoURI 라고 

dev.js 파일 안에 ( 로컬환경에서 ) 

module.exports = {
    mongoURI : 'mongodb+srv://사용자:password@cluster0.bnqwd.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
}

라고 지정해주었음으로,  index.js 에 mongoose.connect(config.mongoURI~~ 로 추가해준다. 

 

prod.js 파일 안에 ( 배포하는 환경) > production 

module.exports = {
    mongoURI : process.env.MONGO_URI
}
//heroku에서 MONGO_URI 를 지정해서 저장해줘야함.

heroku라는 프로그램으로 MONGO_URI 로 지정해서 저장해줘야한다.

 

key.js 에는 

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

배포할 때, 서버에 배포하면 prod형식, 그게 아니면 dev형식으로 배포라고 조건을 걸어준다. 

 

  [git 커밋 전에]  

 .gitignore 에 따로 빼둔 파일을 설정해서 저장해 둘것, 그럼 github 같은 곳에 노출될 위험이 없다.

여태 수정한 소스코드 git 커밋
1.
>> git add . 

2. staged area 에 올라옴 

3. git comit


2. bcrypt 를 설치한다.

>database 에 저장된 비밀번호를 더 안전하게 저장하기 위해, bcrypt를 이용해 비밀번호를 암호화 해서 database에 저장한다. 

vscode terminal에서 간단하게 npm install bcrypt --save 라고 치면 된다.

 

1, models 폴더 안에 user.js 에 

https://www.npmjs.com

/package/bcrypt

 

bcrypt

A bcrypt library for NodeJS.

www.npmjs.com

여기 문법을 참조하여 작성해 준다.

 

*salt를 이용해 비밀번호 암호화를 해야한다. 

 

1. user.js 에

const bcrypt =require('bcrypt');

const saltRounds = 10 으로 작성 

 

설정되어 있는 userSchema 의 값을 이용해

비밀번호를 변경할 때만 암호화되고 email 변경시에는 비밀번호 암호화가 반복되지 않도록 조건을 걸어줘야한다. 

 

*next 라는 parameter를 넣어주고 next( ) 호출해주기

 

사용자의 비밀번호가 변경되었을 때에만, salt를 생성시켜준다는 문법의 genSalt 사용하여 

에러가 있다면 next(err)를 띄우고, 그게 아니라면 bcrypt.hash 에서 사용자의 비밀번호가 = hash 로 암호화 된다는 것을

나타낸다. 

 

[ postman 에서 회원가입 정보 값에서 password 입력해서 확인해보기]

[ mongoDB 클러스터에 나의 database 저장소 안에 Test 결과 확인]

1. 처음에 postman 설치하고 test로 쳐본 나의 이메일 계정과 비밀번호 

2. bcrypt 설치하고 test로 쳐본 이메일 비밀번호 >> 비밀번호가 암호화 되 있는 것을 확인할 수 있다.