[Node.js] 하드코딩 피하기, dotenv 사용법
프로젝트를 진행하다보면, 비밀번호나 키 등을 사용하는 경우가 생깁니다.
이럴 때 소스코드에 직접 비밀번호, 키같은 보안이 필요한 데이터들을 하드코딩으로 넣게 되면, 후에 이러한 데이터들이 노출될 수 있습니다.
특히 깃허브에 프로젝트를 올려서 관리하는 경우, 비밀번호를 소스코드 안에 그대로 넣게 되면 치명적일 수 있습니다.
실제로도 깃허브에서 이러한 정보들을 빼가는 해커들이 있다고 하네요..
따라서 이번 시간에는 환경변수를 이용하여 데이터를 관리하는 방법에 대해서 알아보고자합니다.
환경변수
환경변수란, 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임입니다.
즉, OS가 프로세스 구동을 위해서 참조하는 변수입니다.
이번 시간은 키, 비밀번호, 개발 계정 정보들을 환경변수에 넣어 관리해보겠습니다.
dotevn(.env)
dotenv는 환경변수를 .env에 저장하여 관리하고, 프로세스가 구동 될 때 process.env로 로드하여 해당 변수들을 사용할 수 있도록 하는 의존성 모듈입니다.
따라서 .env 파일에 API 키, 비밀번호, 주소 등을 저장하고, 필요할 때에 이 변수들을 간접적으로 가져다 쓸 수 있게 됩니다.
이러한 방식을 사용하면 소스코드에 직접 정보들이 노출되지 않기 때문에 보안성이 높습니다.
dotevn(.env) 사용법
1. 우선 아래와 같이 dotenv를 설치합니다.
npm install dotenv
2. 그 후, 루트 경로에 .env 파일을 생성하여 아래의 포맷으로 저장할 데이터를 적어줍니다.
오른쪽의 따옴표 안에는 실제 Key값이나 DB이름 등을 적어주면 됩니다.
API_Key='My_APIKey'
DB_NAME='My_DB'
DB_PASSWD='My_PW'
3. 필요한 소스 코드의 상단에 아래와 같이 적어줍니다.
이 작업을 통해 donenv.config()가 .env를 바탕으로 환경변수를 세팅하여 사용할 수 있게 해줍니다.
require('dotenv').config();
4. 사용할 때에는 아래와 같이 적어주면 됩니다.
...
console.log(process.env.DB_PASSWD)
...
5. 깃허브 업로드 전에는 반드시 .gitignore에 .env를 추가해주어야합니다.
# ignore .env file
.env