OJ判题系统中遇到的问题:关于java原生限制权限

做OJ判题系统的时候,使用Java原生来对用户的操作进行限制,遇到了一个现象,就是


/**
* 默认安全管理器
*/
public class DefaultSecurityManager extends SecurityManager{

// 检查所有权限
@Override
public void checkPermission(Permission perm) {
super.checkPermission(perm);
}
}

这段代码中的super.checkPermission(perm); 它也会默认限制一些操作,比如获取文件的目录,会出现以下这个报错:


默认不做任何权限限制
("java.util.PropertyPermission" "user.dir" "read")
Exception in thread "main" java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.dir" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:886)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at yuoj.yuojcodesandbox.security.DefaultSecurityManager.checkPermission(DefaultSecurityManager.java:15)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294)
at java.lang.System.getProperty(System.java:731)
at yuoj.yuojcodesandbox.JavaNativeCodeSandBox.executeCode(JavaNativeCodeSandBox.java:68)
at yuoj.yuojcodesandbox.JavaNativeCodeSandBox.main(JavaNativeCodeSandBox.java:48)

以下是gpt的回答,希望能对大家有帮助:


0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
鱼友9113
下载 APP