我有一个基于Windows XP的ACM Online Judge。
现在我鼓励人们向我的服务器提交关机代码的问题。
public static void main(String[] args) {
Runtime tr = Runtime.getRuntime();
try {
tr.exec("shutdown -s -f -t 60");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
有什么好主意吗?简单,越好。
答案 0 :(得分:2)
您应该在Java沙箱中运行提交的Java代码,其中security manager禁止以下内容:
但即使这样也不足以解决所有可能的问题。例如,处理资源占用非常困难;例如使用大量CPU创建大量对象。如果有人设法突破沙箱,由于您的错误......或者Java安全漏洞,您就会遇到问题。
如果您不确定自己是否了解所有问题,最佳选择是(IMO)关闭您的“裁判”。这是(IMO)不必要的高风险活动。
答案 1 :(得分:1)
结帐SecurityManager。定义您自己的SecurityManager将允许您通过指定policy file来限制代码的功能。
This tutorial也可能会有所帮助。
答案 2 :(得分:0)
查看java-sandbox项目[1],该项目旨在简化自定义安全管理器以运行不受信任的代码。它可以相对容易地确定应该可以访问哪些资源。