Java默认的SecurityManager策略

6
我是SecurityManager的初学者。我一直在尝试使用Java SecurityManager在Linux中对一些不受信任的代码(应该是非常简单的代码,比如计算重量等)进行沙箱隔离。我使用命令java -Djava.security.manager来运行.class文件。
有一件事让我感到困惑:有人说SecurityManager的默认策略几乎允许所有操作,您需要编写自己的策略来拒绝某些风险操作(例如从磁盘读/写文件);而其他人则表示默认策略实际上会拒绝每个风险操作,如果您需要允许某个风险操作,则可以编写自己的策略。
我的问题是:
1.哪一个是正确的?(我找不到默认策略文件) 2.在我的情况下,我真的需要编写自己的安全策略吗?或编写自己的安全策略有什么优势? ps. 我实际上想拒绝所有风险操作。因此,如果默认策略是拒绝每个风险操作,我想我将使用默认的SecurityManager。

我必须回答自己,我使用默认策略并选择相信第二个(拒绝每一个风险动作)。 - user3794582
2个回答

3
默认的安全策略相当严格。您可以在 java.home/lib/security/java.policy 查看默认的Java策略。除了适用于所有域的 grant { ... }; 块中包含的内容(如 java.io.FilePermissions),其他任何内容都不会授予运行的任意代码。
Java安全策略文件不支持“deny”配置,只支持grant。这是使用相对严格的文件作为用户或应用程序策略文件基础的一部分原因。
参考文献:http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html

-1

默认的SecurityManager实现允许调用JOptionPane.showMessageDialog,我认为这是一项风险操作,因为它可能会使用户感到烦恼。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接