[노드, 리액트 기초 | node.js] #7. 비밀 정보를 보호하기

ppmyor·2022년 7월 8일
0

노드, 리액트 기초

목록 보기
7/26
post-thumbnail

🔒 비밀 정보를 보호 할 필요성

mongoDB에 연결할 때 mongoDB의 아이디와 비밀번호가 노출된 상황에서 해당 파일을 그대로 배포하거나 github등에 올릴 경우 타인이 악용할 수 있기 때문에 비밀번호 등은 따로 떼어놓은 다음 gitignore 등으로 관리하게된다.

🔒 보호하기

  1. config/dev.js 생성
module.exports = {
  mongoURI: "mongodb+srv://{id}:{password}@boiler-plate.vms94mj.mongodb.net/?retryWrites=true&w=majority",
};

해당 파일을 생성한 다음 index.js에서 application code만 따와 dev.js에서 따로 관리해준다.

  1. .gitignore에 dev.js 추가
    해당 파일은 github에 올라가면 안되기 때문에 gitignore 파일에 dev.js를 추가해준다.

  2. config/prod.js과 config/key.js 생성
    먼저 해당 파일을 생성하는 배경부터 알고가자면 개발을 할 때에는 두가지 환경에서 가능하다.

  • Local: development
  • Deploy(배포) 한 후 : production
    이는, 환경변수로(process.env.NODE_ENV) 구분이 가능하다.
    local 환경에서 할 때는 dev.js 에서 application code 등을 사용할 수 있지만 배포 후에는 heroku 등의 사이트에서 따로 관리를 하기 때문에 개발 환경이 어떤지에 따라 어디서 사용할지에 대해 분기 처리가 필요하다.
    즉, local 환경인 경우 config/dev.js에서 가져오고 배포한 후 환경에서는 heroku 등에서 가져가도록 관리하게 나누어주어야한다.
  1. config/prod.js 파일 수정
module.exports = {
  mongoURI: process.env.MONGO_URI,
};

process.env.MONGO_URI에서 MONGO_URI는 heroku 등에서 동일하게 해주어야한다.

  1. config/key.js 파일 수정
if (process.env.NODE_ENV === "production") {
  module.exports = require("./prod");
} else {
  module.exports = require("./dev");
}

key 파일에서 위에서 말한 분기 처리를 해주는데 production 모드 일 경우에는 prod.js 파일을 이용하고, development 모드일 경우에는 dev.js 파일을 이용한다.

  1. index.js 파일 수정
const config = require("./config/key");

mongoose
  .connect(config.mongoURI)
  .then(() => console.log("MongoDB Connected..."))
  .catch((err) => console.log(err));

key 파일을 통한 분기 처리를 통하여 환경에 따라 어디로 연결될지 처리해준다.👍

➕ 참고

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 를 공부하며 작성한 글입니다.

profile
유영하는 개발자

0개의 댓글