私有方法可访问

问题描述:

在C#或Java中,即使我们将方法标记为私有方法,仍然可以使用反射或动态加载类来访问它们。当然,我们必须知道方法的名称才能掌握它 - 但我仍然想知道应用程序的安全性是否足以保护私有数据库,银行帐户等,这些应用程序仍然可以使用反射进行黑客入侵。 我的问题在于,为什么Java Reflection API允许访问变量/方法,即使它们是私有的?私有方法可访问

即使反射不存在,从一个虚拟机内获取数据对于一个确定的黑客来说是相当微不足道的。反思的存在是这些语言的创造者认可的:a)在某些特殊情况下它非常方便; b)私人方法决不能保证安全。相反,为了保护诸如银行账户信息之类的私人数据,应该使用间接的间接方式,例如将数据存储在远程数据库中,并为查询机制提供积极的ACL。

+0

ysimonson 感谢您的信息。 – Ravisha 2010-01-29 13:43:37