【问题标题】:Can java security manager be enabled by default at the installation level?java安全管理器是否可以在安装级别默认启用?
【发布时间】:2016-03-05 09:54:39
【问题描述】:

据了解,可以使用反射来操纵 final 关键字的一般概念。

也可以使用安全管理器来防止这种情况发生。

是否可以默认启用安全管理器(在 jdk 安装级别)?

参考资料:

更新 1:

鉴于它需要启用才能工作,它不太可能。

我得到的最接近的方法是将System.setSecurityManager(new SecurityManager()) 放置在类的静态块中,将其捆绑为 jar 并将其放置在 'jre/lib/ext' 中,结果发现它默认未加载,我们仍然需要使用 Class.forName。

因此,即便如此,唯一的选择是使用-Djava.security.manager 标志或以编程方式添加。

【问题讨论】:

    标签: java securitymanager


    【解决方案1】:

    您可以使用 _JAVA_OPTIONS 环境变量设置默认 Java 系统属性,因此您可以在系统上设置 _JAVA_OPTIONS="-Djava.security.manager",这将确保所有 Java 进程都将在启用安全管理器的情况下运行。

    当然,此变量可能会被覆盖,因此根据您的环境,它可能不够安全。

    如果您试图确保不能使用反射覆盖特定类的最终成员,另一种选择是在该类中放置一个静态初始化块,以检查是否安装了安全管理器并抛出一个如果不是,SecurityException。

    【讨论】:

    • 猜猜看。我想要达到的是避免必须依赖编程方法,因为这依赖于加载的类本身,这不一定能保证。这就是为什么我正在寻找一个可以保证并适用于整个 JVM 并且最好是不可逆的选项的原因(即安全管理器一旦安装就不应被卸载)。不过感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多