Java 默认的 SecurityManager 策略

标签 java securitymanager

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

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

我的问题是:

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

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

最佳答案

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

查看您的默认 java 策略

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

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

引用:http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html

关于Java 默认的 SecurityManager 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25132792/

相关文章:

java - Android Eclipse 多个 Dex 文件错误

java - 如何向网络应用程序添加功能,以便它可以同时被多个用户使用

java - 禁止调用 System.exit

java - 将桌面应用程序移植到 Applet 沙箱

java - 如何配置 Java SecurityManager 以允许从给定文件读取所有属性

java - 从 JAVA 启动 MATLAB 代码时出现问题

java - Set.equals 的奇怪行为

java - Jsoup 不会剥离转义的 html 字符

java - 防止在 Java 中创建/启动线程