限制Java编译器API

时间:2012-04-19 20:34:21

标签: java security restriction java-compiler-api

我正在考虑创建一个使用更受限制的Java版本的游戏内代码IDE,例如我不希望它使用I / O流API。这甚至可能吗?

此外,inb4 this。它仍然没有帮助限制能力,只有愚蠢/邪恶的学生XD。

3 个答案:

答案 0 :(得分:2)

您可以自定义java.policy。您可以在此处设置可在Java应用程序中使用的类。如果您的学生使用策略中不存在的类,则会抛出安全性异常。

答案 1 :(得分:2)

限制编译器是一种可能性 - 但可能不是最容易的。您可以尝试使用-bootclasspath option调用编译器,提供JRE rt.jar的精简版本。然后使用禁用类(或实际上:使用未包含在受限制的jar文件中的类)将产生编译器错误。

使用runtime security manager并仅向学生代码提供受限制的权限是一个更好的主意。给学生的课程只提供他们实际需要的permissions(很可能几乎没有,取决于要解决的任务),他们将无法做任何恶意的事情,同时仍然能够使用大多数标准API,只要它不与外部系统接口。

当然,这仍然无法阻止无限循环,即actually impossible

答案 2 :(得分:0)

取决于你的意思"不使用"。如果在IDE中编写的代码不允许访问流API(而不是IDE本身),则可以始终提供自己的类加载器,该类加载器可以限制对类或整个包的访问。