[Just Site] 11. node.js 서버 설정 숨기기 (feat. dotenv)

2022. 3. 5. 17:41프로젝트/Just Site

728x90

서버에서 제일 중요한건 역시 보안이 아닌가 싶다.

예를 들어보자. 이런 코드가 있다.

const dbDatabase = "timer";
const dbPassword = "1q2w3e4r";

db.connect(dbDatabase, dbPassword);

쓸때는 참으로 편하다. 근데 이 코드를 누가 보면?

깃허브에 public으로 올라가 있다면 동네방네 비밀번호가 유출이 되는 상황이 된다.

또한 백엔드의 주소 위치가 공개되는 것도 경계해야 한다.

그래서 이런 부분을 환경변수로 처리한다.

const dbDatabase = process.env.DB_NAME | "name";
const dbPassword = process.env.DB_PW | "password";

db.connect(dbDatabase, dbPassword);

환경변수 설정은 다음과 같이 하면 된다.

// 윈도우 cmd
SET DB_NAME="timer"

// 리눅스 cmd
DB_NAME="timer"

하지만 이런 설정은 세션동안만 유지되기 때문에,

CMD창을 껐다 키면 날라가있는다.


dotenv (.env)

그래서 우리는 'dotenv'라는 패키지를 이용해서 환경변수를 불러올 생각이다.

우선 과정은 다음과 같다.

 

1. dotenv를 설치한다.

2. .env 파일을 생성하고 환경변수를 넣는다.

3. 코드에서 dotenv를 호출한다.

4. .gitignore에 .env를 추가한다.

 

하나씩 해보자.


1. dotenv를 설치한다.

npm i dotenv

2. .env 파일을 생성하고 환경변수를 넣는다.

.env 파일을 만든다.

혹시 몰라서 꺼내는 얘기지만 파일이름이 말 그대로 '.env'다. '.'앞에 아무것도 안 온다.

그리고 다음의 내용을 추가해주자.

// .env 파일
DB_NAME="timer"
DB_PW="1q2w3e4r"

3. 코드에서 dotenv를 호출한다.

require('dotenv').config();

또는 특정 조건에 따라 호출할 수도 있다.

if (something_true) {
	require('dotenv').config();
}

4. .gitignore에 .env를 추가한다.

// .gitignore 파일
.env

추가하는 이유는, 깃에 올라가지 않아서 타인이 보지 못하게 하려고다.


추가한 변수는 process.env.~~로 볼 수 있다.

require('dotenv').config();

console.log(process.env.DB_NAME);