将Tomcat与Java SecurityManager一起使用?

我正在编写一个应该在Ubuntu上运行Tomcat的Web应用程序.在Ubuntu上,Tomcat默认配置为使用Java SecurityManager运行.除了我自己的Web应用程序,只有一些与我自己相关的知名第三方Web应用程序,如BIRT报告引擎.

如果其中一个Web应用程序出现故障或遭到入侵,它可能会使所有其他应用程序无损害,因为它们都属于一起.我不会发生的是,受损的Web应用程序会破坏系统本身,例如调用rm -r /

我是否需要使用java安全管理器来实现这一目标?或者只需要保护一个Web应用程序与另一个Web应用程序?我真的想阻止为我打算使用的所有第三方Web应用程序创建.policy文件.

解决方法:

理论上是的.但是我听说人们在尝试使用安全管理器“锁定”服务器端代码时会遇到大量问题.应用程序通常不会考虑到这一点,并且您需要花费大量时间来调试SecurityExceptions,直到您正确地获得所有权限设置.

编辑:

我建议运行两个Tomcat实例更简单,以避免一个应用程序做一些会导致单个Tomcat中的所有内容的问题. (例如,填满堆,泄漏文件描述符或…调用System.exit().)

如果您仍然担心应用程序“突破”Java并执行相当于“rm / *”的操作,那么您可以在单独的“chroot jail”或虚拟主机中运行每个Tomcat实例.或者您只需从受限制的用户帐户运行Tomcat,并确保该帐户无法访问/更新它不应该访问的文件.

上一篇:为什么java安全管理器既不禁止创建新的Thread()也不禁止它?


下一篇:为什么在java中使用java.security.SecurityManager可以读取任何文件?