dotenv 및 Node-config를 사용하여 사용자 지정 환경 변수 설정

3316 단어 nodejavascript

문제



실수는 배울 수 있는 좋은 방법입니다. Brad Traversy's MERN Front to Back course 작업을 하면서 git 기여 그래프를 '녹색으로' 만들고 싶었기 때문에 각 레슨을 완료한 후 커밋하기로 결정했습니다.

튜토리얼 이었기 때문에 결과에 대해 걱정하지 않았습니다. GitGuardian이라는 서비스로부터 데이터베이스 암호를 GitHub에 커밋했기 때문에 MongoDB URI 내부에 데이터베이스 암호가 노출되는 취약점에 대한 이메일을 받은 직후입니다. 이제 로그인 자격 증명이 전 세계에 노출됩니다.

나는 그것이 정크 데이터베이스이기 때문에 그것에 대해 걱정하지 않았고 여정을 따라 키와 암호를 보호하는 방법을 배울 것이라고 믿었습니다. 여전히 실제처럼 연습하는 것이 중요합니다.

그래서 모범 사례의 일환으로 지역Orlando DEVS 커뮤니티의 의견을 듣기 위해 상황을 Slack에 공개했습니다.

나중에 일부 문서 검색을 통해 해결책을 찾았습니다.

해결책



해결책은 사용자 데이터베이스 비밀번호를 환경 변수에 저장하는 것이었습니다. MERN 과정의 경우 config는 이미 URI에 대한 액세스를 제공하는 데 사용되었지만 config/default.json 파일을 사용합니다. JSON 파일이라는 것은 코드 지침을 저장하기 위한 파일이 아니라 데이터 교환 형식이기 때문에 액세스할 수 없음을 의미했습니다process.env.

이제 어떻게 완료되었는지 살펴보겠습니다.

dotenv 설정


dotenv가 설치되어 있지 않으면 get it here을(를) 설치할 수 있습니다.

로컬 설정에서만 요구dotenv하려는 경우 앱이 프로덕션 모드에 있지 않은지 확인하는 조건 내에서 요구 기능을 캡슐화해야 합니다.

나를 위해 이것은 server.js 내에서 수행되었습니다.

환경 변수 추가



프런트 엔드의 URL 내부에 환경 변수를 보간하기 전에 환경 변수를 사용했을 때. 이번에는 전체 항목(이 경우 데이터베이스 URI)을 .env 파일 안에 붙여넣었습니다.


메모



이 글을 쓰고 있는 지금 저는 아직 과정을 마치지 못했습니다. 저는 Brad가 이러한 환경 변수가 빌드에 포함되지 않도록 어떻게 접근하는지 궁금했습니다(이는 React에서 발생한다는 것을 알고 있습니다).

과정을 건너뛴 후 별도의 데이터베이스를 포함하는 프로덕션용 별도config/production.json를 만드는 것으로 나타났습니다(물론 과정에서는 건너뛴 것 같습니다). 또한 배포는 Heroku에 있으므로 이러한 민감한 변수를 비밀로 유지하는 방법을 배울 기회가 있을 것이라고 확신합니다.

.env가 커밋되지 않도록 방지



여기서 마지막 단계는 .env.gitignore에 추가하는 것입니다.

구성 설정



필요하신 분들은 config here 을 잡으세요.

MERN 과정의 경우 MongoDB URI가 저장되는 위치config/default.json가 있어야 합니다. 내부에서 process.env에 액세스할 수 없는 문제로 인해 config를 통해 사용자 지정 환경 변수로 연결되었습니다.

맞춤 구성 만들기


custom-environment-variables.json 폴더 안에 config 파일을 만듭니다. 변수를 키의 JSON 값 필드에 문자열로 붙여넣습니다. 그런 다음 const db = config.get('mongoURI');를 통해 코드에서 액세스할 수 있습니다.

{
    "mongoURI": "DB_ACCESS_KYLE123"
}


참고: 사용자 지정 환경 변수는 다른 모든 구성 파일보다 우선하며 덮어씁니다. 명령줄 옵션만 최상위 우선 순위를 가질 수 있습니다.

이것이 MERN 과정과 함께 작업하거나 개인 또는 회사 프로젝트에서 작업하는 데 도움이 되었기를 바랍니다.

읽어 주셔서 감사합니다!

www.kylewcode.com

좋은 웹페이지 즐겨찾기