Tag: securitymanager

限制Java中的文件访问

问题: 在我的Java应用程序(不是applet)中,我希望将某些文件操作限制为除了不应限制的类的列表/组/包之外的所有类。 具体来说,我想限制…… 文件读取 文件写入 文件创建 文件删除 …这样它们只能在当前工作目录中为除了不受限制的类之外的所有类完成。 SecurityManager尝试: 我试图实现SecurityManager类的子类来实现这种行为,但是当检查时,提供的文件信息似乎不仅仅提供文件名(除非我遗漏了什么?)。 另外,我不太明白在这种情况下我怎么能找到调用的类,允许我确定是允许操作还是抛出exception。 有什么办法可以获得这种方法所需的所有信息吗? 基于政策的尝试: 我也知道Java策略旨在限制类的操作,包括文件操作等。 但是,我真的很难找到一个很好的资源来学习如何使用.policy文件来解决我的问题。 问题总结: 1)是否有任何替代方法可能比我提到的方法更好? 2)使用SecurityManager可以实现吗? 我错过了我应该如何实际采用这种方法吗? 3)这可以使用策略文件吗? 我在这方面错过了什么好资源吗? 我真的不喜欢为实现这一点而需要投入的任何努力工作 – 我只是不确定我应该如何正确地处理它。 我也非常缺乏足够的资源来教我足够的关于我提到的两种可能的方法,允许我自己实现它。 最重要的是,我并不害怕需要的重要阅读! 感谢您提前给予的任何帮助。

Java策略文件 – 拒绝对代码库的权限

在Java策略文件中, grant codeBase语法指定应授予哪些代码库哪些权限。 例如, grant codeBase“file:/ C:/abc.jar”{permission java.security.AllPermission; }; 将AllPermission授予abc.jar中的代码 以类似的方式,有没有办法deny特定语法的权限? 喜欢这个: deny codeBase“file:/ C:/def.jar”{permission java.io.FilePermission; }; 以便def.jar中的代码获得除FilePermission之外的所有其他权限? 这有可能吗? 我知道这可以使用SecurityManager类轻松完成,但我只想知道是否可以通过仅使用策略文件来实现。

反思安全

如何通过不允许Method , Field , Constructor对象调用setAccessible(true)来强制执行reflection安全性? SecurityPolicy文件还是其他什么? 通常,对于独立Java应用程序,没有注册SecurityManager 。 我使用这个System.setSecurityManager(new SecurityManager()); 这种方法适用于调用方法。 我想强制执行使用jar的整个jar或客户端代码不允许调用setAccessible(true); 有更好的方法吗? 谢谢。

Java:没有安全管理器:RMI类加载器被禁用

嗨我有RMI应用程序,现在我尝试从我的客户端调用服务器上的一些方法。 我有以下代码: public static void main(final String[] args) { try { //Setting the security manager System.setSecurityManager(new RMISecurityManager()); IndicatorsService server = (IndicatorsService) Naming .lookup(“rmi://localhost/” + IndicatorsService.SERVICE_NAME); DataProvider provider = new OHLCProvider(server); server.registerOHLCProvider(provider); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } server是否正确加载,但是当我尝试调用server.registerOHLCProvider(provider); 我收到这些错误: java.rmi.ServerException: RemoteException […]