오늘 프로젝트를 진행하며, API 호출 과정에 있어 API-KEY 값을 외부로 노출하지 않는 방법을 배웠다.
바로 .env라는 파일에 해당 KEY값을 보관하는 방법이다.
env 파일은 무엇이고 어떠한 기능을 하는 것일까?
[출처] https://www.ibm.com/docs/en/aix/7.2?topic=files-env-file
먼저, env는 environment의 준말로서, 단어 그대로 환경에 대한 파일이다.
App이 실행될 때, 특정 값을 넘길 수 있는 환경 변수 파일이다.
즉, 개발자는 이 파일 안에서 API_KEY 값이나 DB관련 정보들 등
Github와 같은 오픈소스에 업로드 하지 않을 여러 변수들을 따로 저장한 후,
.gitignore 파일을 이용하여 Github에 업로드 하지 않을 수 있다.
[출처] https://appdividend.com/2022/03/05/what-is-process-env-in-node-js/
.env 파일을 통해 API_KEY 값을 은닉한 뒤,
redux에서 해당 API_KEY값을 이용하여 API호출을 하는 과정에서
process.env 라는 것을 사용하였다.
이때, process.env란
Node.js 환경에서 .env 파일과 같은 환경 변수 파일에 접근하기 위해서 사용하는
process.env 라는 자바스크립트의 내장 객체이다.
process는 전역 변수이기 때문에(global variable), 별도로 import해야하는 모듈 없이
App의 어디에서든지 접근이 가능하다고 한다.
[출처] https://www.daleseo.com/js-node-process-env/
사실 이러한 방법만으로는 KEY 값을 완전히 안전하게 보관할 수 없다.
개발자 도구 등을 통해 sorce파일을 조금만 들여다보면 서치가 가능하다기 때문이다.
따라서 외부의 공격에 쉽게 노출 될 수 있는 우려가 있고, 이를 방지하기 위한 별도의 장치가 필요하다.
그러나, 그동안 개인 프로젝트를 진행하며 API-KEY값을 Github에 노출시키곤 했는데
이러한 방법으로 1차적인 정보은닉이 가능하다는 것을 새로 알게 되었다.