我想实现一个允许用户添加某些业务逻辑的系统。 我可以使用我自己的类加载器来加载它并创建此类的实例。 它将扩展我的预定义接口(interface),并且我将调用它的一些方法。 我怎样才能防止它在我的系统中做坏事?坏事我的意思是读取我的服务器中不必要的文件,向我的服务器写入无用的信息甚至危险的信息。 它可以访问一些预定义的外部IP地址(或预定义的内部网络)
最佳答案
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";
};
这意味着您可以根据类的来源限制(或更确切地说授予特定)权限。
点击 Michael 对您问题的评论的链接,查看 Java 安全架构的一些实际用法。
关于java - 如何加载用户类文件以确保其安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066018/