0
System.exit(0); or
System.exit(2);

可以正确执行,运行

java -Djava.security.manager -Djava.security.policy==app.policy -cp bin pl.com.App

应用政策:

grant {
      permission java.io.FilePermission "./*", "read,write";
      permission java.net.SocketPermission "localhost:18080", "accept, connect, listen";
      //permission java.util.PropertyPermission "java.home", "read";
};

写入文件的安全管理器工作正常,当我从 app.policy 中删除授权时,执行 new FileWriter("out.txt"); 时我正确地得到异常;

C:\workspace_tomcat\secureWeb>java-版本

java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

当我运行 System.exit(0); 在带有安全管理器的Tomcat下的webapp中,我正确地得到了异常。

4

1 回答 1

2

Javadoc 状态(http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html):

注意:“exitVM.*”权限会自动授予从应用程序类路径加载的所有代码,从而使应用程序能够自行终止

这适用于您将代码作为独立应用程序运行时。这同样适用于 Tomcat - 它可能会自行关闭。但是这并没有扩展到在 Tomcat 容器中运行的程序。这些程序完全由 Tomcat 安全管理器控制:( http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html )

于 2013-04-07T18:07:12.390 回答