2013-04-06 3 views
0
System.exit(0); or 
System.exit(2); 

을 System.exit (0)

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

app.policy으로, 오류없이 실행을 실행할 posiible있는 보안 관리자에서 가능한 허가없이 : 쓰기에 대한

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

보안 관리자 to file이 올바르게 작동하고 있는데 app.policy에서 grant를 제거하면 새로운 FileWriter ("out.txt")를 실행할 때 Exception을 올바르게 얻습니다.

C : \ workspace_tomcat \ secureWeb> 자바 -version

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에 올바르게 예외가 발생합니다.

+1

질문을 진술 해주십시오. –

+0

적절한 권한 (permission java.lang.RuntimePermission "exitVM.0")없이 보안 관리자에서 실행 중일 때 System.exit (0)을 예외없이 실행할 수있는 이유는 무엇입니까? – bastiat

답변

2

자바 독 상태 (http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html) :

참고 : ". exitVM *"권한이 자동으로 따라서 스스로

을 종료하므로, 애플리케이션에서 애플리케이션 클래스 패스로부터로드 된 모든 코드에 부여됩니다 이는 코드를 독립적 인 응용 프로그램으로 실행할 때 적용됩니다. Tomcat에도 똑같이 적용됩니다. 자체적으로 종료 될 수 있습니다. BUT 이것은 이 아니며은 Tomcat 컨테이너 내에서 실행되는 프로그램으로 확장되었습니다. 이러한 프로그램은 Tomcat 보안 관리자가 완전히 제어합니다. (http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html)

+0

알렉스, 도움을 요청 했으므로 http://docs.oracle.com/javase/6/docs/api/java/lang/SecurityManager.html#checkExit%28int%29 – bastiat

+0

에 의해 제안되었습니다 (실례). , 나는 그렇게 게으른 아니 었조차 javadoc 위에 자신을 읽었지만 자바 6 (내가 사용하는), 그리고 그것만 상태 : 이것은 공격자가 자동으로 가상 머신을 강제로 서비스 거부 공격을 탑재 할 수 있습니다 중지합니다. http://docs.oracle.com/javase/6/docs/technotes/guides/security/permissions.html – bastiat

+0

Alex는 securitymanager 주제에서 http://stackoverflow.com/questions/15868534/why도 볼 수 있습니까? -security-manager-doesnt-forbid-no-creating-new-thread-nor-starting-i, thx 사전에 – bastiat