私有领域是否提供任何实际安全性?

时间:2014-11-09 20:20:45

标签: java security reflection private-members

由于我们可以使用反射来访问任何内容,无论它是一个字段,方法还是构造函数,声明私有内容真的有帮助/做什么?私人领域的唯一目的是告诉其他程序员嘿,这个领域不打算像这样使用吗?

在讨论安全问题时,有没有办法阻止用户访问API(为了主题的缘故,让它说是它的闭源)私有和受保护的字段?

1 个答案:

答案 0 :(得分:2)

如果您允许不受信任的代码在没有安全管理器的JVM中运行,它可以通过setAccessible关闭private检查,从而通过反射提供private字段和方法。

Java SecurityManagerpoor history of withstanding determined attacks因此,假设SecurityManager会阻止可能导致任意字节码加载的确定攻击者是不合理的。

即使SecurityManager成立,概念证明也显示了如何通过序列化API等低级Java API提取秘密。

Can a secret be hidden in a 'safe' java class offering access credentials?列出了尝试将敏感数据存储在同样运行不受信任代码的JVM中的字段中的一些缺陷。