일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Util
- MongoDB
- mongoose
- Kotlin
- typeorm
- OOAD
- AWS
- docker
- S3
- DATABASE
- css
- Scheduling
- wireshark
- Android
- TypeScript
- postman
- linux
- React
- Crawling
- HTML
- algorithm
- Network
- Express
- macos
- mysql
- python
- node.js
- OS
- sequelize
- ubuntu
- Today
- Total
Seongwon Lim
[node.js] 보안을 위한 dotenv 설치 및 사용 방법 본문
What is dotenv?
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.
직역하면 dotenv는 .env 파일에서 process.env로 환경 변수를 로드하는 제로 종속성 모듈이라고 설명하고 있다.
dotenv는 프로젝트를 개발할 때 사용되는 Key값, 데이터베이스 비밀번호 등과 같이 공개적으로 제공하기에 민감한 정보들을 외부로 노출시키지 않도록 도와주는 모듈이다. 해당 모듈을 사용함으로써 오픈소스 사이트에 정보가 노출되지 않도록 도와주며 프로젝트의 보안성을 향상시킬 수 있다.
dotenv 모듈 사용 방법
- npm install dotenv --save
명령어를 통해 모듈을 설치한다.
.env 파일 구성하기
외부로 노출시키고 싶지 않은 정보를 저장하는 위치는 .env 파일이다. 민감한 정보들을 해다 파일에 저장한 뒤 외부 파일에서 로드하여 사용할 수 있다. 예를 들어 Mysql 접속을 위한 데이터베이스 정보를 구성한다고 가정해보자.
// .env
DATABASE_NAME = "testDatabase1"
DATABASE_PORT = 3306
DATABASE_USERNAME = "root"
DATABSE_PASSWORD = "testDatabase1234"
DATABSE_HOST = "127.0.0.1"
위와 같은 정보가 있을 때 메인 파일에서 해당 변수들에 접근하고 싶은 경우 아래와 같이 코드를 작성하면 된다.
필자는 메인 파일을 index.js로 정의했다.
// index.js
require('dotenv').config(); // 해당 코드를 사용하고자 하는 파일에 정의
const mysql = require('mysql');
// mysql connection을 위한 변수
const conn = {
host: process.env.DATABASE_HOST,
port: process.env.DATABASE_PORT,
user: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME
}
이처럼 구성 한 뒤 만약에 db에 접속하고 싶은 경우 아래와 같이 db를 연결하면 된다.
const db = require('db');
db.connect(conn);
위와 같이 .env 파일의 변수를 사용하고자 하는 파일에 require('dotenv').config() 를 추가하여 사용할 수 있다.
변수를 로드할 때에는 process.env.변수명형태로 로드할 수 있다.
하지만 이 상태로 오픈소스에 프로젝트를 업로드 하는 경우 .env파일까지 포함하여 업로드 되는 위험이 있다.
.env파일을 제외하고 오픈소스에 업로드하기 위해서는 .gitignore 파일에 제외하고자 하는 파일을 정의한다.
.gitignore 파일 구성하기
// .gitignore
.env
이렇게 .gitignore 파일에 제외할 파일 이름을 명시하면 깃허브에 프로젝트를 푸시했을 때 명시된 파일(혹은 디렉토리)들이 업로드 되지 않기 때문에 민감한 정보에 대한 보안성을 유지할 수 있다.
출처
'Node.js' 카테고리의 다른 글
[node.js] AWS S3에 텍스트 파일 업로드 및 다운로드 기능 구현하기 (0) | 2022.05.10 |
---|---|
[node.js] 라우팅(Routing)의 필요성 (0) | 2022.05.09 |
[node.js] Koa-bodyparser 설치 및 사용 방법 (0) | 2022.05.09 |
[node.js] Koa framework 개념 정리 및 사용하기 (0) | 2022.05.09 |
[node.js] Typescript를 이용하여 Express 환경 구성하기 (0) | 2022.05.08 |