【问题标题】:Set security for Process object in java在java中为Process对象设置安全性
【发布时间】:2017-03-18 06:00:58
【问题描述】:

有人能告诉我如何限制通过进程对象访问系统属性吗?如果我通过 process object 运行以下代码,我可以抛出安全异常吗?

System.getProperty("user.home");

请告诉我如何为流程对象配置证券。

在 ProcessBuilder 类文档中,在环境方法中是这样写的:

系统可能不允许修改环境变量,或者可能 禁止某些变量名称或值。

所以请告诉我如何禁止某些变量值。

更新: 因此,假设我正在使用 Java Web 应用程序并为客户端提供一个平台进行编码。那么如何分别为java web应用程序和客户端应用程序配置java安全性。(因为我永远不想限制web应用程序获取系统的任何属性,而我必须限制客户端使用这些命令来解决应用程序漏洞)

【问题讨论】:

    标签: java security web-applications


    【解决方案1】:

    创建您自己的安全管理器并检查某些属性的访问权限

    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() );
    

    【讨论】:

    • 非常感谢。它就像我想要的那样工作。但是请您详细说明您的答案。这将是一个很大的帮助@StephaneM
    • 我可以将此安全性添加到 Process 类对象吗?
    • 我不知道。如果您想在子进程中实施策略,您可能希望使用策略文件而不是通过编程方式进行。见那里:docs.oracle.com/javase/7/docs/technotes/guides/security/…
    • 如果你能提供帮助,请检查这个问题,它是这个@StephaneM stackoverflow.com/questions/40467866/…的相关问题
    猜你喜欢
    • 2014-06-08
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2016-12-31
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多