[팁].env에 넣으면 안전할까? 브라우저에 전달되는 값 구분하기

Sungyeob2026.10.25 23:10조회 1추천 0댓글 0

파일 이름이 .env라고 해서 그 안의 모든 값이 서버에만 남는 것은 아닙니다. 빌드 도구가 브라우저 코드에 포함하도록 정한 변수는 배포 결과에서도 읽을 수 있습니다.

저장 위치보다 실행 위치를 봅니다

값의 종류놓일 위치판단 기준
공개 서비스 주소브라우저 가능누구나 알아도 접근 권한이 바뀌지 않음
Supabase publishable key브라우저 사용 가능데이터 접근은 별도 권한 정책으로 제한
관리자용 secret·service role key서버 전용노출되면 권한 경계를 우회할 수 있음
외부 API 비밀키서버 전용공개 사용을 전제로 발급된 값인지 확인

Supabase는 공개용 키와 서버 비밀키의 역할을 구분합니다. 공개용 키를 사용하더라도 RLS가 데이터를 보호하도록 구성해야 합니다. 공식 API 키 설명을 참고하세요.

프런트엔드 접두사를 확인하세요

예를 들어 Vite의 VITE_ 환경변수는 클라이언트 코드에 노출되는 용도입니다. 이름이 그럴듯하다고 안전해지는 것은 아닙니다. 비밀값을 VITE_SECRET_KEY처럼 이름 붙여 전달하면 안 됩니다. Vite 환경변수 문서에서 노출 규칙을 확인할 수 있습니다.

배포할 때 남길 점검

  • 서버 전용 값이 프런트엔드 변수에 섞이지 않았다.
  • .env와 로컬 비밀 설정이 Git에 포함되지 않는다.
  • 브라우저로 배포한 자산에 실제 비밀값이 없는지 확인했다.
  • 공개 데이터 접근은 키 이름이 아닌 권한 정책으로 제한했다.

Cloudflare Workers에서는 서버 전용 값을 secret으로 전달할 수 있습니다. Workers secrets 문서에서 관리 방법을 확인하세요.

이미 비밀키가 공개 저장소나 배포 자산에 올라갔다면 파일에서 지우는 것으로 끝내지 말고 해당 키를 폐기·교체해야 합니다. 질문할 때도 키 원문 대신 변수 이름과 사용 위치를 설명해 주세요.

댓글 0

불러오는 중…

댓글을 쓰려면 로그인해 주세요.