문서
/
레시피
/

모범 사례

모범 사례

난독화를 효과적으로 적용하는 방법입니다. 무엇을 보호하고 무엇을 그대로 두어야 하는지, 그리고 난독화로는 할 수 없는 일이 무엇인지 설명합니다.

권장 사항

  • 자신의 코드만 난독화하세요.

    벤더 스크립트, 라이브러리, 폴리필은 VM 난독화하지 마세요. 이미 압축되어 있으므로 난독화해도 느려지기만 합니다.

  • 정밀한 보호에는 comment 모드를 사용하세요.

    모든 코드를 보호하는 대신 vmTargetFunctionsMode를 'comment'로 설정하고, 민감한 함수에만 /* javascript-obfuscator:vm */를 표시하세요. 특정 함수 지정하기 문서를 참고하세요.

  • 난독화 후에는 철저히 테스트하세요.

    난독화된 코드는 항상 대상 환경에서 테스트하세요. 일부 옵션은 미묘한 방식으로 코드를 망가뜨릴 수 있습니다. 런타임 방어 기능은 테스트 자동화와 디버거에도 대응합니다. 테스트와 CI를 참고하세요.

  • 자주 실행되는 경로는 VM 난독화에서 제외하세요.

    애니메이션 루프, 실시간 렌더링, 자주 호출되는 코드에는 vmExcludeFunctions를 사용하세요. 이 옵션은 루트 수준 함수 이름(Async Executor에서는 가장 바깥쪽 async 함수)에만 일치합니다. 중첩된 자주 실행되는 코드를 VM에서 제외하려면 comment 모드를 사용하고 보호가 필요한 함수만 표시하세요.

중요 보안 안내

API 키, 비밀 값, 자격 증명은 난독화를 하더라도 프런트엔드 JavaScript 코드에 절대 저장하지 마세요.

난독화는 코드를 이해하고 수정하는 데 드는 노력을 늘리지만 암호화가 아니며, 리버스 엔지니어링이 불가능하다고 보장할 수도 없습니다. 공격자가 제어하는 환경에서는 런타임을 여전히 관찰할 수 있으므로, 작정한 공격자는 클라이언트 측 코드에서 언제든 데이터를 추출할 수 있습니다. 비밀 정보와 최종적인 보안 판단은 서버에 두세요.

실제로는 다음과 같이 하세요.

  • 비밀 값은 백엔드 서버에 저장하세요
  • 서버 측에서 환경 변수를 사용하세요
  • 키를 숨기려면 API 호출을 백엔드를 통해 프록시하세요
  • 서버가 발급하는 단기 토큰을 사용하세요

무엇을 보호해야 할까요?

VM 난독화는 다음에 적합합니다.

  • 독자적인 알고리즘과 비즈니스 로직
  • 라이선스 검증 코드(클라이언트 측 검사)
  • 변조 방지 및 무결성 검사
  • 게임 로직과 치트 방지 메커니즘
  • 프리미엄 기능 구현
  • 가격 계산 로직

빌드와 릴리스

컴파일하고 번들링한 출력물을 빌드의 마지막 단계에서 난독화하세요. 빌드 파이프라인은 실행 환경 호환성을 참고하세요. 선택한 프리셋의 비용은 프리셋 선택에 설명된 대로 자신의 코드에서 측정하세요. 테스트용 빌드로 기능 테스트를 실행한 다음, 테스트와 CI에 설명된 대로 실제로 배포하는 별도의 릴리스 산출물을 검증하세요.