如何加载用户类文件以确保它安全?

时间:2013-11-19 07:52:53

标签: java security classloader

我想实现一个允许用户添加某些业务逻辑的系统。 我可以使用自己的类加载器来加载它并创建此类的实例。 它将扩展我的预定义接口,我将调用它的一些方法。 如何防止它在我的系统中做坏事?坏事我的意思是在我的服务器中读取不必要的文件,将无用的信息甚至是危险的信息写入我的服务器。 它可以访问一些预定义的外部IP地址(或预定义的内部网络)

1 个答案:

答案 0 :(得分:1)

Java内置了安全管理。如果您不熟悉它,您应该查看Security Features in Java tutorial,它还会显示您需要做的“代码接收器”:http://docs.oracle.com/javase/tutorial/security/toolsign/receiver.html

同时查看Java Security ArchitecturePolicy 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安全架构的实际使用情况。