필자는 방금 application.properties을 잘못올려서 api-key가 노출되었다!
이 오류는 GitHub의 보안 기능이 커밋 히스토리에서 OpenAI API 키를 감지했기 때문에 발생한 것이라고 한다.
다행히 아래 명령어를 통해 커밋사항을 되돌릴 수 있었다.
# 저장소를 처음 상태로 초기화
git reset --hard HEAD~2
# Git 캐시 삭제
git rm -r --cached .
# application.properties 파일에 직접 들어가서 더미데이터로 key 수정!
git add .
git commit -m "Initial commit without sensitive information"
git push -f origin main
다음번에는 이 사태를 방지하고자 백엔드에서 github에 올리면 안되는 파일들과 프론트에서 git hub에 올리면 안되는 파일들에 대해서 알아보고자 한다.
application.properties / application.yml
DB 접속 정보 (URL, username, password)
API 키 (OpenAI, AWS, Google 등)
JWT Secret Key
메일 서버 정보 및 계정
OAuth 관련 정보
💡 Why? 이러한 정보가 노출되면 해커가 DB에 접근하거나, API 키로 과금을 발생시킬 수 있다!
.env 파일
/target, /build 폴더 (빌드 결과물)
IDE 설정 파일 (.idea/, .vscode/)
로그 파일 (*.log)
💡 Why? 개발 환경 설정 파일에는 로컬 경로나 시스템 정보가 포함될 수 있어 보안 취약점이 될 수 있다.
plaintextCopy.env
.env.local
.env.development
.env.production
💡 Why? 프론트엔드의 환경 변수 파일에도 API 키나 서비스 엔드포인트 등 민감한 정보가 포함될 수 있다.
plaintextCopy/node_modules/ # 의존성 모듈
/.next/ # Next.js 빌드 결과물
/dist/ # 빌드 결과물
.DS_Store # Mac 시스템 파일
Firebase 설정 파일
Google Analytics 키
소셜 로그인 정보
결제 시스템 키
Map API 키
💡 Why? 이러한 키들이 노출되면 서비스 과금 폭탄을 맞거나, 악의적인 사용자가 서비스를 도용할 수 있다!
# 환경 설정 파일
.env
*.properties
#### 빌드 결과물
/build/
/dist/
/node_modules/
# 시스템 파일
.DS_Store
*.log
즉시 해당 키 폐기/재발급
git history에서 완전히 제거
팀원들에게 상황 공유
보안 모니터링 강화
💡 TIP: 커밋하기 전에 항상 git status로 변경사항을 확인하는 습관을 들이면 좋다!