자주 묻는 질문
일반 질문
JavaScript 난독화와 그 동작 방식에 대한 일반적인 질문입니다.
코드를 보호해야 할 이유는 여러 가지입니다. 다른 사람이 작업물을 그대로 복사하는 것을 막을 수 있고(HTML5 게임처럼 클라이언트 측에서 실행되는 프로젝트에서 특히 중요합니다), 코드를 이해하고 수정하기 어렵게 만들 수 있으며, 아직 대금을 받지 못한 작업물을 보호하여 소스 코드를 넘기지 않고도 고객에게 동작하는 빌드를 보여 줄 수 있습니다.
일반 난독화는 JavaScript를 읽기 더 어려운 JavaScript로 다시 씁니다. 이름이 바뀌고, 문자열이 옮겨지고 인코딩되며, 제어 흐름이 재구성되지만, 결과는 여전히 디버거로 한 단계씩 실행해 볼 수 있는 JavaScript입니다. VM(가상 머신) 난독화는 함수 본문을 맞춤형 바이트코드로 컴파일하고 이를 실행하는 내장 인터프리터를 함께 배포하므로, 보호된 로직은 더 이상 JavaScript로 존재하지 않습니다. 어떤 함수가 적용 대상이고 어떻게 선택하는지는 VM 난독화를 참고하세요.
네. vmTargetFunctionsMode를 comment로 설정한 다음, 보호할 각 함수에 /* javascript-obfuscator:vm */을 표시하세요. 난독화 전에 실행되는 모든 빌드 단계에서 이 주석을 유지하세요. 특정 함수 지정하기를 참고하세요.
안 됩니다. API 키와 시크릿, 자격 증명은 절대 프런트엔드 코드에 저장해서는 안 됩니다. 아무리 높은 수준으로 난독화하더라도 프런트엔드 JavaScript에 담긴 데이터는 작정한 공격자라면 추출해 낼 수 있습니다. 난독화는 리버스 엔지니어링을 어렵게 만들 뿐 암호화가 아니며, 시크릿을 지키는 수단으로 의존해서는 안 됩니다. 대신 시크릿은 백엔드 서버에 저장하고, 서버 측에서 환경 변수를 사용하며, 키를 감추기 위해 백엔드를 통해 API 호출을 프록시하거나, 서버가 발급하는 단기 토큰을 사용하세요.
난독화는 분석을 사람이 하든 도구나 AI 어시스턴트가 하든 코드를 이해하고 수정하는 데 필요한 노력을 늘리지만, 리버스 엔지니어링이 불가능하다고 보장하지는 않습니다. 공격자가 통제하는 환경에서는 런타임을 관찰할 수 있습니다. 비밀 정보와 최종 보안 판단은 서버에 두세요. VM이 코드를 변환하는 방식.
먼저 런타임 방어가 원인인지 확인하세요. VM Self Defending과 VM Debug Protection은 자동화 도구, 헤드리스 브라우저, 디버거 아래에서, 그리고 target이 실제 실행 환경과 맞지 않을 때 의도적으로 실행을 중단시킵니다. 따라서 기능 테스트는 이 기능들을 끈 별도의 테스트 빌드로 실행하세요. 그 빌드도 실패한다면 vmTargetFunctionsMode: 'comment'로 함수를 하나씩 가상화하며 문제를 좁히세요. 문제 해결 가이드에서 각 단계와 버그 보고서에 포함할 내용을 안내합니다.
난독화 도구는 코드를 추가합니다. 식별자에는 생성된 이름이 붙고, 문자열은 접근 함수와 함께 문자열 배열로 옮겨지며(인코딩은 선택 사항), VM 난독화의 경우 가상 머신 인터프리터 전체가 바이트코드와 함께 번들에 포함됩니다. 크기는 너무 걱정하지 않으셔도 됩니다. 난독화된 코드는 gzip이나 Brotli로 잘 압축되며, 대부분의 서버는 이를 기본으로 활성화하고 있습니다.
아니요. 출력을 다시 쓰면 코드가 깨질 수 있으며, 코드 변경을 탐지하는 Self Defending이나 VM Self Defending을 사용할 때 특히 그렇습니다. 난독화 전에 미니파이어를 실행하는 것은 괜찮지만, /* javascript-obfuscator:vm */ 같은 javascript-obfuscator 주석을 유지해야 합니다.
저희는 소스 코드를 보관하지 않습니다. JavaScript의 기본 난독화는 브라우저에서 실행됩니다. VM 및 HTML 난독화는 소스를 저희 서버로 보내며, 서버는 이를 처리한 뒤 폐기합니다. 요청이 4.4 MB보다 크면 Team 및 Business 플랜은 처리 후 삭제되는 임시 저장소에 업로드합니다. 악용 대응과 사용 현황 분석을 위해 각 난독화 출력의 SHA-256 해시와 사용된 일부 설정(프리셋, 대상, VM 방어 등)을 3개월 동안 보관하며, 코드 자체나 그 내용은 절대 보관하지 않습니다. 대시보드 기록은 브라우저에만 저장되며, 기록에서 관리할 수 있습니다.
아니요. 난독화 도구는 원래의 이름, 주석, 서식을 보존하지 않으므로 출력을 소스로 되돌릴 수 없습니다. 이것이 보안을 보장한다는 뜻은 아니지만(위의 역난독화 관련 질문 참고), 원본은 반드시 안전하게 보관해야 한다는 뜻입니다.
네. 난독화 옵션에서 대상 환경으로 "Node"를 선택하면 Node.js 환경에 맞게 결과물이 최적화됩니다.
VM 인터프리터와 Self Defending 계층을 포함한 난독화 결과물은 데스크톱 에버그린 브라우저와 iOS 16 이상(대략 최근 4년)에서 적극적으로 지원되고 테스트됩니다. 그보다 오래된 브라우저는 ES2015 모듈 지원이라는 최저 기준까지 최선을 다해 지원하며, 그 아래 버전과 Internet Explorer는 지원 범위에 포함되지 않습니다.
VM 보호가 필요하시면 요금제를 확인해 보시고, 표준 난독화는 무료 온라인 플레이그라운드에서 사용해 보세요. 전체 사용 흐름은 시작하기 가이드에서 확인하실 수 있습니다.
요금제 및 계정
플랜, 결제, 사용 한도에 대한 질문입니다.
사용량은 입력한 소스 코드의 크기를 바이트 단위로 측정합니다. 자원을 공정하게 배분하기 위해 난독화 작업 한 건당 최소 0.1 MB(102,400바이트)가 부과됩니다. 예를 들어 50 KB 파일을 난독화하면 할당량에서 0.1 MB가 차감됩니다. 0.1 MB보다 큰 파일은 실제 크기만큼 부과됩니다.
VM 난독화 한도에 도달한 뒤에도 표준(브라우저 기반) 난독화는 한도 없이 계속 무료로 사용할 수 있습니다. 유료 플랜의 VM 할당량은 연간 플랜을 포함해 매월 구독 시작일에 해당하는 날짜에 초기화됩니다. Free 플랜은 초기화되지 않는 평생 한도가 적용됩니다. 일일 VM 한도가 있는 플랜은 그 한도에 도달하더라도 다음 날 다시 VM으로 난독화할 수 있습니다. 더 많은 VM 난독화 할당량이 필요하면 언제든지 플랜을 업그레이드할 수 있습니다.
네, 언제든지 플랜을 업그레이드하거나 다운그레이드할 수 있습니다. 업그레이드 시에는 남은 결제 기간에 대해 일할 계산된 금액이 청구됩니다. 다운그레이드 시에는 다음 결제 주기부터 새로운 요금이 적용됩니다.
구독은 언제든지 취소할 수 있습니다. 현재 결제 기간이 끝날 때까지는 플랜을 계속 이용할 수 있습니다. 다만 결제 기간의 일부나 사용하지 않은 기간에 대해서는 환불을 제공하지 않는 점을 유의해 주세요.
안전한 결제 처리업체인 Stripe를 통해 주요 신용카드(Visa, Mastercard, American Express)와 체크카드를 모두 지원합니다. 모든 거래는 암호화되며 PCI 규정을 준수합니다.
