【问题标题】:Java default SecurityManager policyJava 默认 SecurityManager 策略
【发布时间】:2014-09-27 18:14:07
【问题描述】:

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

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

我的问题是:

  1. 哪个是正确的? (我没找到默认的策略文件)
  2. 就我而言,我真的需要编写自己的安全策略吗?或者编写自己的安全策略有什么好处?

ps。我实际上想否认所有冒险的行为。因此,如果默认策略是拒绝所有有风险的操作,我想我会使用默认的 SecurityManager。

【问题讨论】:

  • 我要回答我自己,我使用默认策略并选择相信第二个(拒绝每一个有风险的行为)

标签: java securitymanager


【解决方案1】:

默认的安全策略非常严格。你可以在java.home/lib/security/java.policy查看你的默认java策略

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

Java 安全策略文件不支持“拒绝”配置,仅支持 grants。这就是从一个相对严格的文件开始是有意义的部分原因,用户可以在该文件之上添加用户或应用程序策略文件。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2019-10-15
      相关资源
      最近更新 更多