Tài liệu
/

Browser Environment

Browser Environment

Pro
v7.9.0+

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ả:

JavaScript

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://localhost khi 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:about: - một bundle chạy bên trong iframe about:blank hoặc srcdoc.

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 browserbrowser-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.

JavaScript

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-evalservice-worker. Với node, userscriptbytenode, 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, HostingHooked 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

  • transporthookedBuiltins có hiệu lực cùng vmSelfDefending, hosting cùng vmDebugProtection; nếu không, không cái nào làm gì.
  • Một target browser, browser-no-eval hoặc service-worker (browser hoặc browser-no-eval đối với hosting).
  • Trình làm rối phiên bản 7.9.0 trở lên cho transport, 7.14.0 trở lên cho hosting, 7.15.0 trở lên cho hookedBuiltins.

Ví dụ

JavaScript