System.exit(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 с менеджером безопасности я правильно получаю исключение.


person bastiat    schedule 06.04.2013    source источник
comment
Не могли бы вы сформулировать свой вопрос?   -  person Alex Turbin    schedule 06.04.2013
comment
почему можно без исключения выполнить System.exit(0) при работе под менеджером безопасности без соответствующего разрешения (разрешение java.lang.RuntimePermission exitVM.0)?   -  person bastiat    schedule 07.04.2013


Ответы (1)


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)

person Alex Turbin    schedule 07.04.2013
comment
Алекс, спасибо за помощь, меня (ошибочно) предложил docs.oracle.com/javase/6/docs/api/java/lang/ - person bastiat; 08.04.2013
comment
Должен извиниться, я не был таким ленивым и даже сам читал выше javadoc, но для java 6 (которую я использую), и в нем говорится только: Это позволяет злоумышленнику организовать атаку типа «отказ в обслуживании» автоматически принудительно останавливает виртуальную машину. docs.oracle.com/javase/6/docs/ технические заметки/руководства/безопасность/ - person bastiat; 08.04.2013
comment
Алекс, в теме менеджера по безопасности, не могли бы вы также увидеть stackoverflow.com/questions/15868534/, заранее спасибо - person bastiat; 08.04.2013