gpt4 book ai didi

java - 为什么java安全管理器不是强制性的?

转载 作者:行者123 更新时间:2023-12-02 11:16:07 25 4
gpt4 key购买 nike

Java 语言的优点之一是我们说它是安全语言。但默认情况下安全管理器不是强制性的。默认情况下,我们可能会遇到许多问题,例如通过反射访问私有(private)对象。有点困惑为什么要这样设计,请您提供更多关于这一点的观点。

最佳答案

One of the benefits of java language is we say it is secure language.

我不同意这个提议:

  • Java 并不是一种(足够)安全的语言,无法免除程序员对安全性的思考。当然,它不足以在浏览器插件中运行不受信任的代码。我不会称 Java 为安全语言。

  • 我不相信更高的安全性会给大多数 Java 应用程序带来好处。

But security manager is not mandatory by default.

正确。

And by default we can have many issues like accessing private objects with reflection.

私有(private)可见性从来都不是作为一项安全功能而设计的。它是一个强制封装 Java 的“抽象数据类型”的功能;即类。

允许反射覆盖可见性规则的原因是,出于实用原因,有时有必要打破封装。它最常在抽象横切功能中完成,例如依赖注入(inject)框架、序列化机制,其中封装旨在解决的问题(例如不需要的耦合)没有实际意义。

简而言之,对于大多数 Java 应用程序来说,我不认为这是一个需要解决的问题。如果应用程序或第 3 方库以这种方式使用反射,那么这样做可能有充分的理由。

<小时/>

现在,我承认某些问题领域需要比典型 Java 应用程序更高级别的安全性。对于他们来说,无论如何都要实现一个安全管理器……并阻止对私有(private)变量的反射访问。不过,我建议,如果您的安全要求需要阻止封装破坏,那么安全管理器不足以解决您必须处理的其他安全问题。

处理硬安全要求的经典方法包括审查开发人员和运营人员、对代码库进行独立审核、入侵测试等等……以及气隙。

关于java - 为什么java安全管理器不是强制性的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com