java.policy 文件如何限制其他 users/code 的安全性?

How does java.policy file restrict safety from other users/code?

我是java安全策略新手,参考[Java核心编程]卷2,有使用策略文件指定文件权限的示例等

我的问题是:

(1) 当我开发自己的应用程序或小程序时,可以使用这个策略来限制自己程序的权限。但是限制自己没有多大意义----我认为政策的意义是限制来自网络或其他来源的未知来源或类。那么如何做这种限制呢?我没有从书上或网上找到好的例子。

(2) 除了使用小程序(现在已经过时),在生产环境中使用 java.policy 文件的常见场景是什么?

非常感谢。

But it doesn't make much sense to restrict myself.

这是有道理的。例如,假设您在纯 Java 中实现了一个网络服务器,并且需要在 public IP 地址上公开它。假设您担心您的代码(或 Java SE 或第 3 方库)中可能存在安全漏洞,这些漏洞可能会导致您的 JVM 受到威胁。保护系统的一种可能方法可能是实施网络服务器以使用 Java 安全框架来限制(假设)受损代码在文件系统中读取/写入文件、启动单独进程、建立网络连接和等等。

(请注意,还有其他方法可以解决上述问题;例如 SE Linux 和 Apparmor。)

I think the meaning of policy is to restrict unknown source or classes from network or others. So how to do this kind of restriction?

是的,这是安全策略的正常使用。

基本思路是应用程序以完全权限启动。对于不受信任的 运行 代码,您使用策略文件实例化安全管理器。然后使用该安全管理器实例化一个(沙盒)类加载器。然后使用沙箱类加载器加载不受信任的代码。

Other then using applet(obsoleted nowadays), what the usual scenario of using java.policy files in production environment?

见上文的一种情况。

另一种情况是当您需要 运行 不受信任的 Java 不基于 applet 的代码时。例如,运行 为最终用户提供的应用程序安装插件,或设置 public 服务器以进行竞争性编码。