我想实现一个允许用户添加某些业务逻辑的系统。 我可以使用自己的类加载器来加载它并创建此类的实例。 它将扩展我的预定义接口,我将调用它的一些方法。 如何防止它在我的系统中做坏事?坏事我的意思是在我的服务器中读取不必要的文件,将无用的信息甚至是危险的信息写入我的服务器。 它可以访问一些预定义的外部IP地址(或预定义的内部网络)
答案 0 :(得分:1)
Java内置了安全管理。如果您不熟悉它,您应该查看Security Features in Java tutorial,它还会显示您需要做的“代码接收器”:http://docs.oracle.com/javase/tutorial/security/toolsign/receiver.html。
同时查看Java Security Architecture和Policy Files。后一个链接包含来自策略文件的这些示例,因此您可以获得一个想法:
grant codeBase "file:/C:/somepath/api/" {
...
};
// If the code is signed by "Duke", grant it read/write access to all
// files in /tmp:
grant signedBy "Duke" {
permission java.io.FilePermission "/tmp/*", "read,write";
};
这意味着您可以根据类的来源限制(或者更确切地授予特定的)类。
点击迈克尔对您问题的评论链接,了解Java安全架构的实际使用情况。