java安全管理器是不是可以在安装级别默认启用?

Posted

技术标签:

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

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

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

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

参考资料:

Change private static final field using Java reflection Running Java Security Manager without the default java.policy file

更新 1:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

猜猜看。我想要达到的是避免必须依赖编程方法,因为这依赖于加载的类本身,这不一定能保证。这就是为什么我正在寻找一个可以保证并适用于整个 JVM 并且最好是不可逆的选项的原因(即安全管理器一旦安装就不应被卸载)。不过感谢您的回答。

以上是关于java安全管理器是不是可以在安装级别默认启用?的主要内容,如果未能解决你的问题,请参考以下文章

在SQLServer中启用FileStream

IIS的安装

java后端的前端第一课

IE浏览器不能安装任何控件

如何用bat把ie安全级别改到最低,所有控件啥的都启用。

windows 2008 r2 英文版 怎么安装成中文