Thực hành tốt nhất
Cách áp dụng làm rối hiệu quả: nên bảo vệ gì, nên để yên gì, và làm rối không thể làm được gì cho bạn.
Khuyến nghị
Chỉ làm rối mã của chính bạn.
Đừng làm rối VM cho script của bên thứ ba, thư viện hay polyfill. Chúng vốn đã được rút gọn, và làm rối chỉ khiến chúng chạy chậm hơn.
Dùng chế độ comment để bảo vệ có chọn lọc.
Đặt
vmTargetFunctionsModethành'comment', rồi chỉ đánh dấu các hàm nhạy cảm bằng/* javascript-obfuscator:vm */thay vì bảo vệ mọi thứ. Xem Nhắm mục tiêu hàm cụ thể.Kiểm thử kỹ lưỡng sau khi làm rối.
Luôn kiểm thử mã đã làm rối trong môi trường đích. Một số tùy chọn có thể làm hỏng mã theo những cách khó nhận ra. Các cơ chế phòng thủ lúc chạy cũng phản ứng với công cụ tự động hóa kiểm thử và trình gỡ lỗi; xem Kiểm thử và CI.
Loại các đường chạy nóng khỏi làm rối VM.
Dùng
vmExcludeFunctionscho vòng lặp hoạt ảnh, kết xuất thời gian thực hoặc mã được gọi thường xuyên. Tùy chọn này chỉ khớp với tên hàm ở cấp gốc (khi dùng Async Executor là các hàmasyncngoài cùng); để giữ mã nóng lồng nhau ngoài VM, hãy dùng chế độ comment và chỉ đánh dấu những hàm cần được bảo vệ.
Lưu ý bảo mật quan trọng
Không bao giờ lưu khóa API, bí mật hay thông tin xác thực trong mã JavaScript phía frontend, kể cả khi đã làm rối.
Làm rối làm tăng công sức cần thiết để hiểu và sửa đổi mã, nhưng nó không phải là mã hóa và không thể đảm bảo rằng việc dịch ngược là bất khả thi. Môi trường chạy vẫn có thể bị quan sát trong một môi trường do kẻ tấn công kiểm soát, nên một kẻ tấn công quyết tâm luôn có thể trích xuất dữ liệu từ mã phía client. Hãy giữ bí mật và các quyết định bảo mật có thẩm quyền trên máy chủ.
Trong thực tế:
- Lưu 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
- Dùng token ngắn hạn do máy chủ của bạn cấp
Bạn nên bảo vệ những gì?
Làm rối VM lý tưởng cho:
- Thuật toán độc quyền và logic nghiệp vụ
- Mã kiểm tra giấy phép (kiểm tra phía client)
- Kiểm tra chống can thiệp và kiểm tra tính toàn vẹn
- Logic trò chơi và cơ chế chống gian lận
- Phần triển khai các tính năng trả phí
- Logic tính giá
Build và phát hành
Hãy làm rối đầu ra đã biên dịch và đóng gói ở bước build cuối cùng; xem Tương thích môi trường chạy để biết quy trình build. Hãy đo chi phí của preset bạn chọn trên chính mã của bạn, như được mô tả trong Chọn preset. Chạy kiểm thử chức năng trên một bản dựng kiểm thử, sau đó kiểm tra bản phát hành riêng mà bạn thực sự phát hành, như được mô tả trong Kiểm thử và CI.
