有人可以告诉我如何限制通过流程对象访问系统属性?如果我通过流程对象运行以下代码,我可以抛出安全异常。
System.getProperty("user.home");
请告诉我如何配置过程对象的证券。
在ProcessBuilder类文档中,在环境方法中写道:
系统可能不允许修改环境变量或者可能 禁止某些变量名称或值。
所以请告诉我如何禁止某些变量值。
更新 因此,假设我使用的是Java Web应用程序,并为客户端提供了一个代码平台。然后,如何为java Web应用程序和客户端应用程序单独配置java安全性。(因为我永远不想限制Web应用程序获取System的任何属性,而我必须限制客户端使用这些命令来应用程序漏洞)
答案 0 :(得分:0)
创建自己的安全管理器并检查某些属性的访问权限
public class MySecurityManager extends SecurityManager {
@Override
public void checkPropertyAccess(String key) throws SecurityException {
if ( key != null && key.equals("some.forbidden_value") {
throw new SecurityException("some message");
}
super.checkPropertyAccess( key );
}
}
代码中的其他位置附加了您的安全管理器:
System.setSecurityManager( new MySecurityManager() );