相关疑难解决方法(0)

Sandbox JVM将服务器从不受信任的来源保护

在接受和执行上传的,不受信任的代码时,如何保护我的服务器免受恶意活动的影响?

用户应该能够实现我的界面和给定数据,执行一些计算并返回数据.不需要I/O操作,当然也没有线程/进程操作或其他操作.

使用java.policy文件可以拒绝所有内容(通过不授予任何内容).

$ cat test.policy 
grant {
};
Run Code Online (Sandbox Code Playgroud)

使用此策略文件,未授予的操作将导致安全性异常.

$ cat Print.java
public class Print {
    public static void main(String a[]) throws Exception {
        System.out.println(System.getProperty("os.name"));
    }
}

$ javac Print.java
$ java -Djava.security.manager -Djava.security.policy==test.policy Print
Exception in thread "main" java.security.AccessControlException: 
  access denied (java.util.PropertyPermission os.name read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
    at java.lang.System.getProperty(System.java:650)
    at Print.main(Print.java:3)
Run Code Online (Sandbox Code Playgroud)

这是万无一失的吗?我是否需要做更多工作来保护我的服务器环境不受信任的来源?

java security jvm sandbox

8
推荐指数
1
解决办法
3739
查看次数

标签 统计

java ×1

jvm ×1

sandbox ×1

security ×1