什么是原生沙箱?

What is native sandbox?

我发现 "Enable the operating system's restricted environment (native sandbox)" 已添加到 8u51 的 Java 控制面板。但是我找不到任何文件。

从官方Release Notes for JDK 8 and JDK 8 Update Releases得知:

  • Native sandbox is available on Windows platform only.
  • Native sandbox can be enabled or disabled through Java Control Panel->Advanced settings->Enable the operating system's restricted environment (native sandbox) or by setting deployment.security.use.native.sandbox property to true in deployment.properties file.

  • Native sandbox is disabled by default.

  • When native sandbox is enabled, the sandbox applets or web-start applications will run in a restricted environment, that is provided by the operating system. This will not affect the all-permission applications and they will continue to run as before.

  • Native sandbox will be disabled for applications included the in Exception Site List (ESL) or when Deployment Rule Set (DRS) is used.

  • Sandbox applets deployed with HTML applet tag which includes all-permissions JAR files from the Class-Path manifest attribute, will run in native sandbox.

  • In such cases, a special warning dialog will display, informing the user that the applet may not work properly, when such an applet tries to access the all-permission JAR files.

  • Custom preloader will be disabled in certain cases when native sandbox is enabled:

    • Custom preloader will be disabled when sandbox applets or web-start applications are initializing and the default preloader will be used instead. After application is initialized, Java VM restarts with native sandbox enabled and the custom preloader will be used.
    • For all-permission applications, custom preloader will be disabled if it is located in the JNLP file with sandbox permission, until user agrees to run application from the Security Dialog, which grants unrestricted access (privileged) to application.

目前没有比这更多的文档了。综上所述,在Java平台中,原生沙盒是一个特定的Windows特性,它使用一套来自操作系统的API来改进沙盒。

Windows 应用商店应使用同一组 API。有一篇关于此的文章:Windows Store Apps live in the Sandbox。它说:

Being in the Sandbox also means the app has no direct access to any other app or service running outside of the app’s sandbox. Access to other apps or services is facilitated by Windows itself with a defined set of APIs with in the runtime environment.