在java中传递某些类之间的值我们可以使用System.setProperty.但是使用System.getProperties()我们可以获得所有系统属性.因此,如果我使用任何第三方API意味着他们也可以访问我的属性,他们也可以更改.那么System.setProperty安全吗?
这取决于你的安全意味着什么.
优良作法1将System Properties对象视为只读,但您不能依赖第三方库来执行此操作.
如果您担心看到或更改应用程序属性的"可信"第三方代码,请不要使用"系统属性"来表示它们.创建自己的Properties对象并将属性放在那里.这可能是最简单的方法.
如果使用沙盒,则可以防止不受信任的代码访问"系统属性"...前提是您的代码不会将"系统属性"对象泄露给不受信任的代码.(访问检查在System方法中实现......)
一个Properties对象是线程安全的......如果你指的是那种安全性.
1 - 有时需要以编程方式修改系统属性.但是,通过执行此操作,您最终可能会遇到脆弱的应用程序.系统属性通常用于在初始化期间配置JVM服务.如果类初始化的顺序由于某种原因而改变,您可能会发现您的应用程序代码现在设置属性太晚了.如果可能,最好通过-D命令行参数设置属性.