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 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), khiến mã khó hiểu và khó sửa đổi 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ột bản dựng chạy được mà không phải giao mã nguồn.
Làm rối tiêu chuẩn viết lại JavaScript của bạn thành JavaScript khó đọc hơn: tên được thay thế, chuỗi được di chuyển và mã hóa, luồng điều khiển được tái cấu trúc, nhưng kết quả vẫn là JavaScript mà trình gỡ lỗi có thể chạy từng bước. Làm rối VM (Máy ảo) biên dịch thân các hàm của bạn thành bytecode tùy chỉnh và kèm theo một trình thông dịch được nhúng để chạy nó, nên logic được bảo vệ không còn tồn tại dưới dạng JavaScript. Xem Làm rối VM để biết những hàm nào được bao phủ và cách chọn chúng.
Có. Đặt vmTargetFunctionsMode thành comment, rồi đánh dấu từng hàm cần bảo vệ bằng /* javascript-obfuscator:vm */. Giữ các chú thích này qua mọi bước build chạy trước khi làm rối. Xem Nhắm mục tiêu hàm cụ thể.
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.
Làm rối tăng công sức để hiểu và sửa mã, dù việc phân tích do con người, công cụ hay trợ lý AI thực hiện, nhưng không đảm bảo việc dịch ngược là bất khả thi. Hoạt động lúc chạy vẫn quan sát được trong môi trường do kẻ tấn công kiểm soát. Giữ bí mật và quyết định bảo mật cuối cùng trên máy chủ. Cách VM biến đổi mã.
Trước tiên hãy loại trừ các cơ chế phòng thủ lúc chạy. VM Self Defending và VM Debug Protection cố ý làm hỏng việc thực thi khi có công cụ tự động hóa, trình duyệt headless và trình gỡ lỗi, cũng như khi target không khớp với môi trường chạy thực, vì vậy hãy chạy kiểm thử chức năng trên một bản dựng kiểm thử riêng đã tắt chúng. Nếu bản dựng đó vẫn lỗi, hãy thu hẹp vấn đề bằng vmTargetFunctionsMode: 'comment' để ảo hóa từng hàm một. Hướng dẫn khắc phục sự cố hướng dẫn từng bước và những gì cần đưa vào báo cáo lỗi.
Trình làm rối thêm mã: các định danh nhận tên được sinh ra, chuỗi được chuyển vào một mảng chuỗi kèm các hàm truy cập (có thể được mã hóa), 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 tốt bằng gzip hoặc Brotli, thứ mà hầu hết máy chủ đều bật sẵn.
Preset nặng hơn có thể tăng kích thước đầu ra và thời gian thực thi. Hãy đo thời gian khởi động, các đường chạy thường xuyên và kích thước bundle đã nén thay vì dựa vào hệ số chậm cố định. Tham khảo tùy chọn · Thực hành tốt nhất
Không. Việc viết lại đầu ra có thể làm hỏng nó, đặc biệt với Self Defending hoặc VM Self Defending, vốn phát hiện các thay đổi trong mã. Bạn có thể chạy trình rút gọn trước khi làm rối, miễn là nó giữ lại các chú thích javascript-obfuscator như /* javascript-obfuscator:vm */.
Chúng tôi không lưu giữ mã nguồn của bạn. Làm rối cơ bản cho JavaScript chạy trong trình duyệt của bạn. Làm rối VM và HTML gửi mã nguồn tới máy chủ của chúng tôi, nơi xử lý rồi hủy bỏ nó; khi một yêu cầu lớn hơn 4.4 MB, các gói Team và Business tải nó lên bộ lưu trữ tạm thời, được xóa sau khi xử lý. Để xử lý lạm dụng và phân tích mức sử dụng, chúng tôi giữ trong ba tháng một mã băm SHA-256 của mỗi đầu ra đã làm rối và một số cài đặt đã dùng (như preset, target và cơ chế phòng thủ của VM), không bao giờ giữ chính mã đó hay bất kỳ nội dung nào của nó. Lịch sử trên bảng điều khiển chỉ được lưu trong trình duyệt của bạn; quản lý tại Lịch sử.
Không. Trình làm rối không giữ lại tên, chú thích hay định dạng gốc của bạn, nên đầu ra không thể được chuyển ngược lại thành mã nguồn của bạn. Đây không phải là một bảo đảm về bảo mật (xem câu hỏi về giải làm rối ở trên), nhưng nó có nghĩa là bạn phải 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.
Hỗ trợ gồm cú pháp ES2015+, async/await, optional chaining và trường lớp riêng tư; hãy kiểm tra cú pháp mới hơn trên phiên bản obfuscator bạn chọn. Biên dịch TypeScript và JSX và đóng gói ứng dụng trước khi làm rối - xem Tương thích môi trường chạy. Tệp HTML được hỗ trợ thông qua parseHtml; xem Làm rối tệp HTML.
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 4 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.
Mức sử dụng được tính theo kích thước mã nguồn đầu vào của bạn tính bằng byte. Mỗi lần làm rối có mức tính tối thiểu là 0,1 MB (102.400 byte) để đảm bảo phân bổ tài nguyên công bằng. Ví dụ, nếu bạn làm rối một tệp 50 KB, nó sẽ được tính là 0,1 MB vào hạn mức của bạn. Các tệp lớn hơn 0,1 MB được tính theo kích thước thực tế.
Khi đạt đến giới hạn làm rối VM, bạn vẫn có thể tiếp tục dùng làm rối tiêu chuẩn (chạy trong trình duyệt) miễn phí và không giới hạn. Với các gói trả phí, hạn mức VM của bạn được đặt lại mỗi tháng vào ngày kỷ niệm hằng tháng của thời điểm bắt đầu gói đăng ký, kể cả với các gói theo năm. Gói Free có giới hạn trọn đời và không được đặt lại. Các gói có giới hạn VM hằng ngày có thể làm rối bằng VM trở lại vào ngày hôm sau khi đã đạt giới hạn đó. Bạn có thể nâng cấp gói bất cứ lúc nào để có thêm hạn mức làm rối VM.
Có, bạn có thể nâng cấp hoặc hạ cấp gói bất cứ lúc nào. Khi nâng cấp, bạn sẽ được tính phí theo tỷ lệ cho phần thời gian còn lại của chu kỳ thanh toán. Khi hạ cấp, mức giá mới sẽ áp dụng từ chu kỳ thanh toán tiếp theo.
Bạn có thể hủy đăng ký bất cứ lúc nào. Bạn vẫn giữ quyền truy cập gói của mình cho đến hết chu kỳ thanh toán hiện tại. Xin lưu ý rằng chúng tôi không hoàn tiền cho phần chu kỳ thanh toán chưa dùng hết hoặc thời gian không sử dụng.
Chúng tôi chấp nhận tất cả các loại thẻ tín dụng phổ biến (Visa, Mastercard, American Express) và thẻ ghi nợ thông qua đơn vị xử lý thanh toán an toàn của chúng tôi là Stripe. Mọi giao dịch đều được mã hóa và tuân thủ chuẩn PCI.
