包如何为 类 和接口提供安全性?
How packages provide security for classes and interfaces?
在阅读 java 中的软件包时,我发现了
中软件包的 imp 功能
java 表示
为 类 和 interfaces.So 提供外部人员无法提供的安全保障
直接访问它,但如何?
我还没有使用过这个功能,我很想知道它。
问题含糊不清,但这是使用包提供安全性的一种方式...
如果一个变量是受保护的,只有它的子class和同一个包中的class可以访问它。如果您想增加安全性,这会很有用,因为您只能使添加到包中的文件能够访问 class.
中的变量
示例:
假设我是一个银行程序。我有一个名为 balance 的受保护变量。如果变量是 public,那么有人可以编写一个程序来访问 class 并随心所欲地改变余额。但由于它受到保护,只有我放在银行包中的文件才能访问变量以更改它。
软件包不提供任何有意义的安全性。但是,它们确实有助于通过 "package private" 访问支持模块化:
package com.example;
public class Example {
int someMethod() { ... }
}
someMethod
的访问权限是包私有的,这意味着它只对 com.example
包中的其他 类 可见。您可以用同样的方式控制字段、类 和界面的可见性。
请注意,对于大多数 Java 应用程序而言,这不是可靠的安全机制。应用程序很容易使用反射来解决大多数(如果不是全部)基于访问修饰符的访问限制。阻止这种情况的唯一方法是 运行 禁用反射 API 的安全沙箱中的不受信任代码。
在阅读 java 中的软件包时,我发现了
中软件包的 imp 功能java 表示
为 类 和 interfaces.So 提供外部人员无法提供的安全保障 直接访问它,但如何? 我还没有使用过这个功能,我很想知道它。
问题含糊不清,但这是使用包提供安全性的一种方式...
如果一个变量是受保护的,只有它的子class和同一个包中的class可以访问它。如果您想增加安全性,这会很有用,因为您只能使添加到包中的文件能够访问 class.
中的变量示例:
假设我是一个银行程序。我有一个名为 balance 的受保护变量。如果变量是 public,那么有人可以编写一个程序来访问 class 并随心所欲地改变余额。但由于它受到保护,只有我放在银行包中的文件才能访问变量以更改它。
软件包不提供任何有意义的安全性。但是,它们确实有助于通过 "package private" 访问支持模块化:
package com.example;
public class Example {
int someMethod() { ... }
}
someMethod
的访问权限是包私有的,这意味着它只对 com.example
包中的其他 类 可见。您可以用同样的方式控制字段、类 和界面的可见性。
请注意,对于大多数 Java 应用程序而言,这不是可靠的安全机制。应用程序很容易使用反射来解决大多数(如果不是全部)基于访问修饰符的访问限制。阻止这种情况的唯一方法是 运行 禁用反射 API 的安全沙箱中的不受信任代码。