- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在编写一个应该在 Ubuntu 上的 Tomcat 上运行的 Web 应用程序。在 Ubuntu 上,Tomcat 默认配置为与 Java SecurityManager 一起运行。除了我自己的 web 应用程序之外,只会有一些与我自己相关的知名第三方 web 应用程序,例如 BIRT 报表引擎。
如果其中一个 Web 应用程序出现故障或受到威胁,它可能会安全地关闭所有其他应用程序,因为它们都是一体的。我不会发生的是,一个受损的网络应用程序会损害系统本身,比如调用 rm -r/
我需要使用 java 安全管理器来实现吗?或者是否只需要保护一个 Web 应用程序免受另一个 Web 应用程序的影响?我真的很想避免为我打算使用的所有第 3 方 Web 应用程序创建 .policy 文件。
最佳答案
理论上是的。但我听说人们在尝试使用安全管理器“锁定”服务器端代码时会遇到一大堆问题。应用程序通常在设计时并未考虑到这一点,您会花费大量时间调试 SecurityExceptions,直到正确设置所有权限。
编辑:
我建议运行两个 Tomcat 实例更简单,以避免一个应用程序执行某些操作会导致单个 Tomcat 中的所有内容崩溃的问题。 (例如,填满堆、泄漏文件描述符或...调用 System.exit()。)
如果您仍然担心应用程序“脱离”Java 并执行与“rm/*”等效的操作,那么您可以在单独的“chroot jail ”或虚拟主机中运行每个 Tomcat 实例。或者您可以简单地从受限用户帐户运行 Tomcat,并确保该帐户无法访问/更新它不应访问的文件。
关于java - 将 Tomcat 与 Java SecurityManager 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277276/
我有java应用程序,我正在考虑安全性。我可以混淆代码,但我仍然可以使用例如 javassist 从内存中“窃取”代码或在运行时修改代码。我正在寻找 SecurityManager 来在修改之前保护我
运行以下代码,我在 getPackage() 行收到 StackOverflowError。如果我无法访问 getPackage() 来检查包,如何才能只向我想要的包内的类授予权限? package
我一直在尝试使用自定义 SecurityManager 来沙箱一些外部加载的代码。我的 SecurityManager 工作正常。我采取了与这里许多帖子建议的相同的方法:每当执行潜在危险的代码时设置自
我有一个程序在其所有线程中运行一个基本的 RMISecurityManager。但是我想对几个线程做更多的控制,并专门为这些线程设置另一个 SecurityManager。 我该怎么做? ...如果这
有没有办法为 Java SecurityManager 创建一个自定义策略文件,它位于我想要的任何位置?如果是,我该怎么做,以及如何以编程方式将 SecurityManager 绑定(bind)到该文
我能否使用自定义的 SecurityManager 避免第三方代码创建新线程、启动新 VM 或泄露数据? 最佳答案 线程创建导致调用 securityManager.checkAccess(g),其中
我想创建一个非常严格的安全管理器,所以我扩展了 SecurityManager 并覆盖了所有自定义的 checkXXX 方法。 但后来我发现我的安全管理器没用,因为任何人都可以: System.set
我是一名大学讲师,我正在修改关于 Java 反射的讲座。其他年份,当我教授抑制访问检查的恐怖时,我展示了您可以设置一个 SecurityManager 并执行类似的操作 if ("suppre
我是一名大学讲师,我正在修改关于 Java 反射的讲座。其他年份,当我教授抑制访问检查的恐怖时,我展示了您可以设置一个 SecurityManager 并执行类似的操作 if ("suppre
任何人都可以解释以下 c# 行为吗?我已经编写了一个小型控制台应用程序来了解 CAS,但我似乎无法理解为什么以下代码行会像它们那样工作: string[] myRoles = new string[]
此问题是 my previous question about unusual exceptions generated by a custom security manager. 的后续问题在高层次
经过大量搜索和反复试验,我仍然无法确定是否需要安全管理器,如果需要,如何让它发挥作用。 启动服务器的代码: Registry registry; try { Syste
全局并最终存储安全管理器的检查是否可以接受? 给出以下代码行: public static final boolean SEC_ON = (System.getSecurityManager() !=
我有一个方法 A,它可能如下所示: public double A{ if (secM == null) { secM = new SecurityManager(); Syste
我正在尝试集成 Spring Boot 和 Shiro。当我尝试在我的一个 Controller 中调用 SecurityUtils.getSubject() 时,发生了异常:org.apache.s
我想禁止 spring webapp(在 tomcat 中运行)使用任何包含“..”的文件路径。 显然,首先要做的是在用户信息被用于文件路径之前对其进行清理的地方。但是,应用程序中有数百个地方进行文件
我想允许沙箱中的脚本访问系统属性,但我收到 AccessControlException。这是代码: import static org.junit.Assert.*; import java.sec
全部, 我正在设计一个基于云的服务,该服务将提供执行客户提交的一些“插件”代码的选项。为了使这项工作有效,插件不能威胁系统完整性或具有访问其他客户端数据的任何能力是至关重要的。 理想情况下,我希望客户
我有一个用于受信任应用程序代码的 ClassLoader 和一个用于用户提交(不受信任)代码的单独 ClassLoader。 我希望安全管理器限制用户提交的代码。如何从 SecurityManager
我目前正在尝试在 gradle 中为共享构建服务器运行一些测试。我收到以下错误: Error occurred during initialization of VM java.lang.Int
我是一名优秀的程序员,十分优秀!