전체 가이드
높음 심각도설정 오류

프로덕션의 source map은 소스 코드를 유출합니다

source map(.js.map 파일)은 브라우저가 압축된 코드를 원본 소스로 되돌려 매핑하게 합니다. 프로덕션에서 공개적으로 제공되면, 누구나 주석까지 포함한 비압축 코드베이스를 재구성할 수 있습니다.

무엇인가요

빌드 도구는 디버깅을 돕기 위해 source map을 생성합니다. 압축된 번들이 함께 배포된 .map 파일을 참조하면, 브라우저는 — 그리고 누구나 — 원본 소스를 다운로드할 수 있습니다.

이는 내부 로직, 이름, TODO 주석, 그리고 때로는 백엔드와 인증이 어떻게 동작하는지 드러내는 하드코딩된 값을 노출합니다.

왜 중요한가요

읽을 수 있는 소스는 공격자가 로직 결함, 숨겨진 endpoint, 클라이언트에서만 실행되는 검증을 찾기 훨씬 쉽게 만듭니다.

또한 번들 안에 '숨겨져' 있다고 가정한 시크릿이나 내부 URL을 유출할 수도 있습니다.

고치는 방법

Next.js에서 프로덕션 source map 비활성화하기

프로덕션 빌드에서 브라우저 source map을 끄세요.

// next.config.js
module.exports = { productionBrowserSourceMaps: false };
또는 비공개로 유지하기

오류 모니터링을 위해 source map이 필요하면, 제공하는 대신 오류 추적기(예: Sentry)에 업로드하고 공개 빌드에서 제거하세요.

사라졌는지 확인하기

배포 후, 번들의 .map URL 중 하나를 요청하세요. JSON source map이 아니라 404를 반환해야 합니다.

자주 묻는 질문

source map은 항상 나쁜가요?

아니요 — 디버깅에 매우 유용합니다. 문제는 프로덕션에서 공개적으로 제공하는 것입니다. 대신 모니터링 파이프라인에 두세요.

압축(minification)이 코드를 보호하나요?

표면적으로만 그렇습니다. 공개 source map이 있으면 압축은 읽을 수 있는 소스로 완전히 되돌려집니다.

내 앱도 영향을 받나요?

AppSafe는 이 문제와 수십 가지 다른 문제를 한 번의 무료 스캔으로 점검합니다.

내 앱 무료 스캔