NodeJs 및 MariaDB, 사용자 및 암호 저장
앞으로 며칠 동안 MariaDB Node 커넥터로 작업할 예정입니다.저는 주로 API로 작업하기 때문에 사용법이 좀 헷갈립니다.
문제는 제가 MariaDB 로그인 세부 정보를 어디에 보관해야 하는지입니다.여기에 있는 예제를 살펴보았지만, 제작 중에 MariaDB 로그인 세부 정보를 코드에 입력하면 안 된다는 것을 알 수 있습니다.
const mariadb = require('mariadb');
const pool = mariadb.createPool({host: 'mydb.com', user: 'myUser', connectionLimit: 5});
이것은 괜찮은가요 아니면 보안 문제인가요?이 경우 더 나은 해결책은 무엇입니까?
API용이든 데이터베이스용이든 상관없이 코드 저장소에 자격 증명을 저장하면 안 됩니다. 그러면 공동작업자가 데이터베이스에 액세스할 수 있기 때문입니다.가장 일반적인 접근 방식은 환경 변수를 사용하여 코드가 실행되는 시스템에 따라 구성할 수 있도록 하는 것입니다.
Bash와 같은 Linux와 유사한 터미널에서 Node를 호출하는 경우 다음과 같은 환경 변수를 전달할 수 있습니다.
DB_HOST=mydb.com DB_USER=myUser node myscript.js
그리고 코드에서 당신은 그것을 통해 접근할 것입니다.process.env
:
const {
DB_HOST = 'localhost', // a non-sensitive default value
DB_USER = 'root',
} = process.env
const mariadb = require('mariadb')
const pool = mariadb.createPool({host: DB_HOST, user: DB_USER, connectionLimit: 5})
터미널에서 스크립트를 호출할 때마다 환경 변수를 설정하는 것은 장기적으로 지루하기 때문에 똑똑한 사람들이 dotenv의 개념을 발명했습니다..env
구성 가능한 변수를 저장할 파일입니다.dotenv 패키지는 속성이 이미 정의되지 않은 경우 이러한 파일을 찾고 해당 값을 환경에 적용합니다.
파일을 사용하는 것은 파일을 만드는 것만큼 간단합니다..env
프로젝트 루트 디렉터리:
DB_HOST=mydb.com
DB_USER=myUser
중요:이 파일을 다음에 추가해야 합니다..gitignore
사용자의 자격 증명이 의도하지 않은 사용자에게 노출되는 것을 방지합니다.
이전 스크립트를 수정합니다.
require('dotenv').config() // Add this to apply missing things to process.env before we read from it
const {
DB_HOST = 'localhost',
DB_USER = 'root',
} = process.env
const mariadb = require('mariadb')
const pool = mariadb.createPool({host: DB_HOST, user: DB_USER, connectionLimit: 5})
자세한 내용:12요소 앱 - III. 구성
URL, 사용자 이름 및 암호와 같은 연결 세부 정보를 운영 환경의 환경 변수에 보관해야 합니다.다음을 사용하여 개발 환경에서 이러한 변수를 시뮬레이션할 수 있습니다.dotenv
모듈
프로젝트의 루트 디렉터리에 .env 파일을 만듭니다.새 줄에 NAME=VALUE 형식으로 환경별 변수를 추가합니다. 예:
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
NPM과 함께 dotenv 설치:npm install dotenv --save-dev
const dotenv = require('dotenv')
dotenv.config();
const mariadb = require('mariadb');
const pool = mariadb.createPool({host: process.env.DB_HOST, user:process.env.DB_USER, connectionLimit: 5});
.env 파일을 코드 저장소에 푸시하지 않도록 합니다..gitigonre 사용
언급URL : https://stackoverflow.com/questions/57970445/nodejs-and-mariadb-storing-user-and-password
'programing' 카테고리의 다른 글
노드 js 파일에서 폴더 경로 가져오기 (0) | 2023.08.22 |
---|---|
응답 다운로드JS 개체(파일) (0) | 2023.08.22 |
PowerShell의 PowerShell 파일 폴더 경로 (0) | 2023.08.22 |
iOS 기기만을 대상으로 하는 CSS 미디어 쿼리 (0) | 2023.08.22 |
파이썬을 사용하여 Ajax 페이지 스크랩 (0) | 2023.08.17 |