Java默认的SecurityManager策略

时间:2014-08-05 06:53:13

标签: java securitymanager

我是SecurityManager的初学者。我一直在尝试使用Java SecurityManager来沙箱中一些不受信任的代码(应该是非常简单的代码,比如计算权重等)。我使用命令java -Djava.security.manager来运行.class文件。

让我感到困惑的一件事是:有人说SecurityManager的默认策略几乎允许每个操作,你需要编写自己的策略来拒绝一些冒险行为(例如从磁盘读取/写入文件);而其他一些人则说违约政策实际上否定了所有冒险行为,如果您需要允许一些冒险行动,您可以为该行动编写自己的政策。

我的问题是:

  1. 哪个是对的? (我没找到默认的策略文件)
  2. 在我的情况下,我真的需要编写自己的安全策略吗?或者编写自己的安全策略有什么好处?
  3. PS。我其实想要否认所有冒险行为。因此,如果默认策略是拒绝所有冒险行为,我想我将使用默认的SecurityManager。

2 个答案:

答案 0 :(得分:3)

默认安全策略非常紧张。您可以在java.home/lib/security/java.policy

查看默认的Java策略

grant { ... };块中未包含的适用于所有域的所有内容(例如java.io.FilePermissions)未授予您运行的任意代码。

Java安全策略文件不支持'拒绝'配置,仅支持grant。这就是为什么开始使用相对严格的文件是有意义的,因为用户可以添加用户或应用程序策略文件。

参考:http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html

答案 1 :(得分:-1)

默认的SecurityManager实现允许调用 JOptionPane.showMessageDialog ,我认为这是冒险操作,因为它会激怒用户。