java语言的一个好处是我们说它是安全语言。但默认情况下,安全管理器不是强制性的默认情况下,我们可以遇到许多问题,例如使用反射访问私有对象。对它为何如此设计感到困惑,请你就此提出更多要点。
答案 0 :(得分:1)
java语言的一个好处是我们说它是安全语言。
我不同意这个主张:
Java不是一种(足够)安全的语言,可以免除程序员对安全性的思考。当然,它不足以在浏览器插件中运行不受信任的代码。我不会称Java为安全语言。
我不相信更多安全对大多数Java应用程序都有好处。
但默认情况下,安全管理器不是强制性的。
正确。
默认情况下,我们可以遇到许多问题,例如使用反射访问私有对象。
私人可见性从未被设计为安全功能。它是一种强制封装Java“抽象数据类型”的功能;即班级。
允许反射覆盖可见性规则的原因在于,出于实际原因,有时需要必要来打破封装。最常见的是抽象交叉功能,如依赖注入框架,序列化机制,其中封装旨在解决的问题(例如,不需要的耦合)是没有实际意义。
简而言之,对于大多数Java应用程序,我不认为这是一个需要解决的问题。如果应用程序或第三方库以这种方式使用反射,那么可能是一个很好的理由。
现在我接受一些问题域要求比典型的Java应用程序更高级别的安全性。对于他们来说,一定要实现安全管理器......并阻止对私有变量的反射访问。但是,我建议如果您的安全要求需要阻止封装破坏,那么安全管理器不足以解决您必须处理的其他安全问题。
处理硬安全要求的经典方法包括审核您的开发人员和操作人员,对代码库进行独立审计,入侵测试等等......以及空隙。