Browser Environment
Khai báo cách bản dựng production của bạn được phục vụ để mã được bảo vệ có thể ràng buộc tính toàn vẹn vào đó.
Tùy chọn browserEnvironment khai báo các thông tin về môi trường mà bản dựng production của bạn được phục vụ, để mã được bảo vệ có thể tự ràng buộc vào chúng hoặc phản ứng với chúng. Đây là một đối tượng nhỏ, và mỗi trường chỉ có hiệu lực khi đi cùng một cơ chế bảo vệ cụ thể - tự thân tùy chọn này không làm gì cả:
transport
Giao thức mà môi trường production của bạn dùng để phục vụ bundle - 'http' hoặc 'https'. Có hiệu lực cùng vmSelfDefending.
Với 'https', một bản sao được một kỹ sư dịch ngược phục vụ qua HTTP thuần sẽ không chạy đúng. 'http' hoặc để trống trường này thì không thêm sự bảo vệ đó.
Bản dựng khai báo transport: 'https' chỉ chạy đúng ở nơi nó thực sự được phục vụ qua https:. Mọi giao thức khác đều làm hỏng nó, vì vậy chỉ khai báo khi mọi ngữ cảnh tải bản dựng production của bạn đều là HTTPS. Điều đó loại trừ:
http://thuần, kể cảhttp://localhostkhi phát triển;file://- Electron, Cordova và các ứng dụng đóng gói khác;- các kiểu nhúng
blob:vàabout:- một bundle chạy bên trong iframeabout:blankhoặcsrcdoc.
Chuyển hướng HTTP→HTTPS ở phía client vẫn hiển thị trang HTTP trước, nên bundle không được chạy trước khi việc chuyển hướng hoàn tất.
hosting
Nơi bundle production của bạn được phục vụ - 'remote' hoặc 'local'. Có hiệu lực cùng vmDebugProtection, và chỉ trên các target browser và browser-no-eval. Yêu cầu trình làm rối phiên bản 7.14.0 trở lên.
Với 'remote', bản sao mà một người dịch ngược lấy về và chạy trong môi trường cục bộ của họ sẽ bị coi là không khớp môi trường thực thi, và các cơ chế phòng thủ chống tự động hóa sẽ phản ứng theo cấu hình trong vmDefenseReaction. 'local' hoặc trường không được đặt sẽ không thêm sự bảo vệ đó.
Bản dựng khai báo hosting: 'remote' chỉ chạy đúng khi được tải từ một máy chủ từ xa. Bundle được mở từ môi trường cục bộ - localhost, máy chủ dev, file:// - sẽ cố ý bị coi là không khớp, vì vậy chỉ khai báo khi mọi ngữ cảnh tải bản dựng production của bạn đều được phục vụ từ xa, và không đưa nó vào các bản dựng dùng cho phát triển cục bộ, kiểm thử và CI.
hookedBuiltins
Đặt thành true để khai báo rằng runtime mà bản build production của bạn chạy trong đó thay thế một cách hợp lệ các builtin gốc bằng wrapper JavaScript - cơ chế anti-tamper của chính ứng dụng, trang chủ (host page), hoặc các tiện ích mở rộng trình duyệt khác dùng chung realm. Có hiệu lực cùng vmSelfDefending. Yêu cầu trình làm rối phiên bản 7.15.0 trở lên.
Thông thường Self Defending coi một builtin gốc bị thay thế là can thiệp và ngăn bản build chạy. Với hookedBuiltins: true, nó chấp nhận môi trường như vậy và mã được bảo vệ vẫn chạy. false hoặc trường không được đặt giữ nguyên hành vi nghiêm ngặt.
hookedBuiltins cố ý nới lỏng việc phát hiện can thiệp: một khi được đặt, nhà phân tích bọc chính các builtin đó để xem xét mã của bạn cũng không còn bị chặn. Ảo hóa VM, chống gỡ lỗi và bảo vệ tính toàn vẹn không bị ảnh hưởng. Chỉ bật khi biết chắc runtime production của bạn có hook builtin và mức bảo đảm yếu hơn đó là chấp nhận được.
Các target được hỗ trợ
browserEnvironment chỉ áp dụng cho các target browser, browser-no-eval và service-worker. Với node, userscript và bytenode, tùy chọn này bị từ chối - việc làm rối thất bại với lỗi xác thực thay vì âm thầm bỏ qua thiết lập. hosting còn hẹp hơn: được chấp nhận trên service worker nhưng không ràng buộc gì ở đó.
Trong bảng điều khiển, các điều khiển Transport, Hosting và Hooked Builtins nằm trong khu vực Advanced Protection. Mỗi điều khiển chỉ có thể chỉnh sửa khi cơ chế bảo vệ đi kèm đang bật - VM Self Defending cho Transport và Hooked Builtins, VM Debug Protection cho Hosting - và target hỗ trợ nó.
Yêu cầu
transportvàhookedBuiltinscó hiệu lực cùngvmSelfDefending,hostingcùngvmDebugProtection; nếu không, không cái nào làm gì.- Một target
browser,browser-no-evalhoặcservice-worker(browserhoặcbrowser-no-evalđối vớihosting). - Trình làm rối phiên bản 7.9.0 trở lên cho
transport, 7.14.0 trở lên chohosting, 7.15.0 trở lên chohookedBuiltins.
