DEV WIKI
보안 · 오류·증상

AI가 만든 클라이언트 번들에 서버 비밀값이 포함됨

API 키·토큰·데이터베이스 연결 문자열이 브라우저 번들·소스맵·네트워크 응답에 포함되었는지 확인합니다.

빠른 답변

우선 확인할 원인
브라우저에 전달된 값은 사용자에게 공개된 값입니다. 서버 전용 비밀값은 클라이언트 코드에서 참조하지 않고 서버 경계에서만 사용해야 하며 이미 노출된 값은 교체를 검토해야 합니다.
먼저 확인할 항목
프로덕션 JavaScript 번들과 소스맵에서 비밀값 이름·접두사·일부 값이 검색되는지 확인합니다.
적용 범위
현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우문맥: 바이브 코딩
출처 확인일
2026-08-04
최종 검토
2026-08-04
수정일
2026-08-04
오류·수정 제보 (새 창에서 열림)

현재 증상

  • 보안 위험
  • 설정 누락

먼저 확인할 항목

프로덕션 JavaScript 번들과 소스맵에서 비밀값 이름·접두사·일부 값이 검색되는지 확인합니다.

Next.js의 NEXT_PUBLIC_ 또는 Vite의 VITE_ 접두사가 붙은 변수에 서버 비밀값을 넣었는지 확인합니다.

브라우저 네트워크 응답·HTML·로그에 값이 포함되는지 확인합니다.

노출이 확인되면 해당 자격 증명의 사용처와 교체 가능 여부를 기록합니다.

피해야 할 조치

주의

  • 실제 비밀값을 이슈·로그·검수 파일에 복사하지 않습니다.
  • 변수 이름만 바꾸고 이미 배포된 자격 증명을 계속 사용하지 않습니다.

환경별 원인과 조치

확인 순서

  1. 실제 자격 증명 값 대신 변수 이름과 노출 위치를 기록합니다.
  2. 프로덕션 번들·소스맵·HTML·네트워크 응답에서 비밀값이 브라우저로 전달되는지 확인합니다.
  3. NEXT_PUBLIC_, VITE_ 같은 공개 접두사 변수에 서버 전용 값을 넣었는지 찾습니다.
  4. 노출이 확인되면 자격 증명 교체, 사용처 점검, 서버 전용 코드로 이동하는 순서를 정합니다.

브라우저에 전달된 값은 사용자가 볼 수 있다고 가정해야 합니다. 노출된 비밀값을 삭제하거나 마스킹하는 것만으로 과거 노출을 되돌릴 수 없으므로 교체 여부를 별도로 결정하십시오.

참고 자료

Guides: Environment Variables | Next.js (새 창에서 열림)

Next.js · 공식 자료 · 확인 범위: NEXT_PUBLIC_ 접두사가 붙은 변수는 브라우저 JavaScript에 인라인될 수 있으므로 비밀값에 사용하지 않아야 합니다. · 확인일: 2026-08-04

Env Variables and Modes | Vite (새 창에서 열림)

Vite · 공식 자료 · 확인 범위: VITE_ 접두사가 붙은 변수는 클라이언트 소스 코드에 노출되므로 비밀 정보를 담지 않아야 합니다. · 확인일: 2026-08-04

AI가 만든 클라이언트 번들에 서버 비밀값이 포함됨 | DEV WIKI