Câu hỏi thường gặp
Câu hỏi chung
Những câu hỏi phổ biến về làm rối JavaScript và cách nó hoạt động.
Có rất nhiều lý do để bảo vệ mã của bạn: ngăn người khác chỉ cần sao chép và dán lại công sức của bạn (đặc biệt quan trọng với các dự án phía client như game HTML5), loại bỏ chú thích và khoảng trắng để mã tải nhanh hơn và khó hiểu hơn, đồng thời bảo vệ phần công việc chưa được thanh toán để bạn có thể trình bày cho khách hàng mà không phải giao mã nguồn.
Làm rối VM (Máy ảo) biến mã JavaScript của bạn thành bytecode tùy chỉnh chạy trên một trình thông dịch được nhúng. Khác với làm rối tiêu chuẩn vốn vẫn tạo ra JavaScript có thể đọc được, làm rối VM che giấu hoàn toàn cấu trúc mã gốc của bạn. Các công cụ phân tích tĩnh không thể hiểu được logic nếu chưa dịch ngược toàn bộ máy ảo. Tìm hiểu thêm trong hướng dẫn làm rối VM của chúng tôi.
Có! Chúng tôi cung cấp tùy chọn áp dụng làm rối VM một cách chọn lọc cho các hàm hoặc phương thức cụ thể. Bạn chỉ cần đánh dấu hàm mục tiêu bằng một chú thích đặc biệt (/* javascript-obfuscator:vm */), và chỉ hàm đó mới được xử lý qua trình làm rối VM. Cách này lý tưởng để chỉ bảo vệ những thuật toán nhạy cảm nhất, trong khi phần mã còn lại vẫn dùng làm rối tiêu chuẩn hoặc giữ nguyên, giúp giảm thiểu chi phí hiệu năng.
Không. Khóa API, thông tin bí mật và thông tin xác thực TUYỆT ĐỐI KHÔNG được lưu trong mã frontend. Ngay cả với mức làm rối cao nhất, mọi dữ liệu trong JavaScript phía frontend đều có thể bị một kẻ tấn công quyết tâm trích xuất. Làm rối khiến việc dịch ngược khó hơn, nhưng nó không phải là mã hóa và không nên được tin cậy để bảo vệ thông tin bí mật. Thay vào đó, hãy lưu thông tin bí mật trên máy chủ backend, dùng biến môi trường ở phía máy chủ, chuyển tiếp các lệnh gọi API qua backend để ẩn khóa, hoặc dùng token có thời hạn ngắn do máy chủ của bạn cấp.
Không có hình thức làm rối nào an toàn tuyệt đối 100% — rốt cuộc JavaScript vẫn chạy trong môi trường mà kẻ tấn công kiểm soát — trình duyệt hoặc Node.js — và ở đó việc kiểm tra bộ nhớ khi chạy luôn khả thi. Không một hình thức làm rối JavaScript nào có thể chặn đứng điều đó; thứ nó có thể làm là tăng chi phí để tiếp cận được. Hiện chưa tồn tại dịch vụ gỡ rối tự động trực tuyến nào cho mã đã làm rối bằng VM — mỗi lần làm rối sẽ biên dịch mã thành bytecode tùy chỉnh với một máy ảo riêng biệt, khiến việc tạo công cụ dùng chung là bất khả thi. Làm rối tiêu chuẩn dễ bị phá hơn nhiều: nó thường có thể bị đảo ngược một phần bằng các công cụ tự động và trình làm đẹp mã. Làm rối VM đòi hỏi phải dịch ngược hoàn toàn máy ảo, giải mật mã và giải mã bytecode của nó, hiểu tập lệnh của nó và lần theo quá trình thực thi — một quy trình có thể mất hàng tuần nỗ lực tập trung. Nếu không có VM Self Defending, các tác nhân AI mạnh (ví dụ Claude Opus 4.7) có thể lần theo bytecode và tái dựng gần đúng mã gốc với những cơ sở mã nhỏ. Khi bật VM Self Defending, các lớp phòng thủ chống LLM — chống hooking, xác minh toàn vẹn xuyên realm và kiểm tra tính nguyên bản của bytecode — sẽ phá vỡ những kỹ thuật động mà một tác nhân dùng để hiểu bytecode: đo đạc, hooking và thực thi trong sandbox. Việc đọc tĩnh tệp vẫn khả thi nhưng chỉ lộ ra bytecode mờ đục, và mọi nỗ lực quan sát runtime diễn giải nó đều kích hoạt một bước kiểm tra toàn vẹn. Chỉ từ tệp này, việc gỡ rối tự động bằng AI trở nên bất khả thi trên thực tế. Để gia cố mã hơn nữa: hãy bọc các hàm nhạy cảm trong một IIFE để tên của chúng được biến đổi hoàn toàn, và bật các tùy chọn gia cố như mã hóa bytecode. Tìm hiểu thêm về cách VM biến đổi mã.
Làm rối VM là một công nghệ phức tạp, và một số trường hợp biên có thể chưa được hỗ trợ đầy đủ. Nếu mã của bạn bị lỗi sau khi làm rối VM, bạn có thể khoanh vùng vấn đề bằng cách dùng vmTargetFunctionsMode: 'comment' để làm rối chọn lọc các hàm cụ thể. Xem hướng dẫn khắc phục sự cố của chúng tôi để biết các bước xác định đoạn mã có vấn đề và báo cáo sự cố.
Trình làm rối chèn thêm mã mới để chống gỡ lỗi và dịch ngược. Các chuỗi được chuyển sang dạng thập lục phân, và với làm rối VM, toàn bộ một trình thông dịch máy ảo được đóng gói cùng bytecode của bạn. Đừng quá lo về kích thước — mã đã làm rối nén rất tốt bằng GZIP, thứ mà hầu hết máy chủ đều bật sẵn.
Mọi hình thức làm rối đều ít nhiều ảnh hưởng đến hiệu năng. Làm rối tiêu chuẩn có chi phí tối thiểu. Làm rối VM ảnh hưởng nhiều hơn hẳn, và mức độ phụ thuộc nặng vào mã - ví dụ, mã bytecode dùng nhiều đệ quy sẽ chậm hơn rõ rệt. Trung bình, preset low làm chậm khoảng 10 lần, còn preset chống LLM kèm Self Defending và Debug Protection chậm khoảng 12 lần. Bạn có thể tinh chỉnh sự cân bằng bằng cách điều chỉnh các tùy chọn hoặc chỉ áp dụng làm rối VM một cách chọn lọc cho những phần mã nhạy cảm. Xem hướng dẫn thực hành tốt nhất của chúng tôi để biết các mẹo tối ưu.
Không, điều đó không được khuyến nghị và trong một số trường hợp sẽ làm hỏng mã (đặc biệt nếu bạn bật self-defending). Tuy nhiên, bạn có thể chạy mã của mình qua trình rút gọn trước khi làm rối.
Với các tệp nhỏ hơn 4.4 MB, mã nguồn được xử lý hoàn toàn trong bộ nhớ và trả về ngay lập tức dưới dạng mã đã làm rối. Với các tệp lớn hơn (gói Team/Business), chúng tôi tạm thời tải chúng lên bộ lưu trữ an toàn và xóa ngay sau khi quá trình làm rối hoàn tất. Như một biện pháp bảo vệ bổ sung, một tác vụ dọn dẹp chạy mỗi 5 phút để xóa mọi tệp cũ hơn 5 phút. Mã của bạn không bao giờ được lưu giữ.
Không, không thể đưa mã đã làm rối trở lại mã gốc của bạn, vì vậy hãy giữ bản gốc an toàn.
Có. Bạn có thể chọn "Node" làm mục tiêu trong tùy chọn làm rối để tối ưu kết quả cho môi trường Node.js.
Chúng tôi hỗ trợ ES2015 (ES6) và mọi tính năng JavaScript hiện đại, bao gồm cú pháp ES2022+, trường lớp riêng tư, async/await, optional chaining và nhiều tính năng khác. TypeScript và JSX phải được biên dịch sang JavaScript trước khi làm rối. Với gói trả phí, bạn cũng có thể làm rối tệp HTML — hãy thêm thuộc tính data-javascript-obfuscator vào bất kỳ thẻ <script> nào bạn muốn bảo vệ, và chúng sẽ được làm rối riêng lẻ trong khi vẫn giữ nguyên cấu trúc HTML. Lưu ý rằng mã trong mỗi script được đánh dấu phải độc lập (không tham chiếu đến các script khác), và các script dạng ES module sẽ bị bỏ qua.
Kết quả đã làm rối — bao gồm trình thông dịch VM và lớp Self Defending — được hỗ trợ và kiểm thử tích cực trên các trình duyệt desktop cập nhật liên tục và iOS 16+ (khoảng 3 năm gần nhất). Các trình duyệt cũ hơn được hỗ trợ ở mức nỗ lực tối đa, xuống tới ngưỡng cứng là hỗ trợ ES2015 module; mọi thứ thấp hơn mức đó, kể cả Internet Explorer, đều nằm ngoài phạm vi.
Hãy xem các gói giá của chúng tôi để có bảo vệ VM, hoặc thử khu thử nghiệm trực tuyến miễn phí cho làm rối tiêu chuẩn. Đọc hướng dẫn bắt đầu để có phần hướng dẫn đầy đủ.
Giá & tài khoản
Câu hỏi về các gói, thanh toán và giới hạn sử dụng.
pricing.faq.usageMeasured.answer
pricing.faq.exceedLimit.answer
pricing.faq.upgradeDowngrade.answer
pricing.faq.cancel.answer
pricing.faq.paymentMethods.answer
