有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用最高安全设置运行java

我目前正在编写一个内部编码挑战web应用程序,我想知道除了在运行时使用下面的java选项之外,是否还需要其他安全预防措施。所以客户端将通过web浏览器访问网页,提交代码,服务器将编译并运行代码

java -Djava.security.manager=default

基本上,挑战将更多地集中在单线程数学和算法上。所以我需要启用基本的数据结构对象,并禁用任何文件、socket、线程或任何可能不那么重要的东西

基于我的快速搜索,如上所述打开安全管理器似乎是一个解决方案,但由于这是一个与安全相关的问题,我想在它启动之前确定一下

还有什么我能做得更多的吗


共 (1) 个答案

  1. # 1 楼答案

    从在chroot监狱中运行代码开始——我建议使用jailkit(在dom-judge中使用)来自动化监狱构建过程(我假设您处于某种类似unix的环境下)。Chroot监狱比完整的虚拟机更轻,更容易设置。有些人试图用AppArmor(在edx中使用)达到同样的效果。如果两者都不可用,请使用VirtualBox等虚拟机vagrant可能对VM设置很有用

    无论您做什么,都不要只依赖于JVM安全性。我所看到的所有严重的编码挑战系统都使用上述机制之一,通常有几个“代码执行器”机器接收出现在公共队列上的任务。其思想是,尽管环境设置和拆卸可能很慢,但通过保持足够的执行机器处于备用状态,任何传入的作业都可以毫不延迟地处理

    特别是,JVM权限不包括时间限制、线程或最大堆大小。您需要使用setrlimit来控制运行时和堆。我不知道如何限制Java线程的创建,但一点研究可能会发现更多的东西

    话虽如此,您始终可以提供empty security policy,如下所示:

    grant {
    };
    

    这应该禁止任何和所有安全请求操作