12장: 보안 점검

왜 바이브코더에게 보안이 더 중요한가

전통적인 개발자는 보안에 대해 교육을 받습니다. 하지만 바이브코더는 그런 배경 없이 바로 서비스를 만듭니다. AI도 보안을 알아서 챙겨주지 않습니다. 여러분이 "보안 점검해줘"라고 말하지 않으면, AI는 기능 구현에만 집중합니다.

배포하기 전에 아래 항목들을 꼭 확인하세요.


API 키 노출 사고

가장 흔하고 치명적인 실수입니다. Supabase의 Secret key나 다른 서비스의 비밀 키가 코드에 직접 들어가 있으면, GitHub에 올리는 순간 전 세계 누구나 볼 수 있게 됩니다.

실제로 이런 일이 매우 자주 일어납니다. 비밀 키가 노출되면 누군가 여러분의 데이터베이스에 접근하거나, 유료 서비스를 여러분 계정으로 사용할 수 있습니다.

방지하는 방법은 간단합니다. 비밀 키는 반드시 .env 파일에 넣고, .env 파일은 반드시 .gitignore에 포함시키세요. 7장에서 이미 이 설정을 했지만, 배포 전에 한 번 더 확인합니다.

.env 파일이 .gitignore에 포함되어 있는지 확인해줘.
그리고 코드 안에 직접 API 키나 비밀번호가 하드코딩된 곳이 없는지 전체 검사해줘.

만약 이미 GitHub에 올라가 버렸다면, 단순히 파일을 삭제해서는 안 됩니다. Git 히스토리에 내용이 남기 때문입니다. 이 경우엔 즉시 해당 서비스에서 키를 무효화(revoke)하고 새 키를 발급받는 게 먼저입니다.

.env 파일이 실수로 GitHub에 올라간 것 같아.
Git 히스토리에서도 완전히 지우는 방법을 알려줘.

환경변수(.env) 완전 정복

.env 파일은 비밀 정보를 저장하는 파일입니다. Supabase URL, 비밀 키, 다른 서비스의 비밀번호 같은 것들이 여기에 들어갑니다.

중요한 건, .env 파일은 여러분의 컴퓨터에만 존재해야 한다는 겁니다. GitHub에 올라가면 안 됩니다.

그러면 배포할 때는 어떻게 할까요? Vercel 같은 배포 서비스에는 환경변수를 따로 등록하는 기능이 있습니다. 이건 13장에서 다룹니다.

.env 파일 형식은 이렇습니다.

NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_xxxx...
SUPABASE_SECRET_KEY=sb_secret_xxxx...

NEXT_PUBLIC_으로 시작하는 변수는 브라우저에서도 읽을 수 있는 공개용입니다. 그 외의 변수는 서버에서만 읽힙니다. Supabase의 Publishable key(sb_publishable_)는 NEXT_PUBLIC_을 붙여도 되지만, Secret key(sb_secret_)는 절대 붙이면 안 됩니다.


AI가 생성한 코드의 보안 점검

배포 전에 AI에게 전체적인 보안 점검을 맡깁니다.

이 프로젝트를 배포하기 전에 보안 점검을 해줘.
아래 항목들을 확인해줘.

1. .env 파일이 .gitignore에 포함되어 있는가
2. 코드에 API 키나 비밀번호가 하드코딩되어 있지 않은가
3. NEXT_PUBLIC_ 변수에 Secret key가 들어가 있지 않은가
4. Supabase RLS가 모든 테이블에 설정되어 있는가
5. 사용자 입력을 받는 곳에 기본적인 검증이 있는가

문제가 있으면 알려주고 고쳐줘.

AI가 점검 결과를 알려주면 하나씩 확인하고 수정합니다. 점검 완료 후 커밋까지 부탁합니다.

보안 점검 결과를 반영해서 커밋하고 GitHub에 올려줘.

✏️ 실습: 배포 전 보안 점검하기

1단계: Claude Code에게 보안 점검을 요청합니다.

이 프로젝트를 배포하기 전에 보안 점검을 해줘.

2단계: 문제가 있으면 수정하고, 커밋합니다.

수정 완료됐어. 커밋하고 GitHub에 올려줘.

보안 점검이 끝났으면 13장에서 배포를 진행합니다.

참고자료

© 2026 서울바이브. 본 콘텐츠의 무단 복제 및 재배포를 금합니다.