java - 如何加载用户类文件以确保其安全?

标签 java security classloader

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

最佳答案

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";
};

这意味着您可以根据类的来源限制(或更确切地说授予特定)权限。

点击 Michael 对您问题的评论的链接,查看 Java 安全架构的一些实际用法。

关于java - 如何加载用户类文件以确保其安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066018/

相关文章:

java - init 方法调用失败;添加 Hibernate envers 后嵌套异常是 java.lang.NoSuchMethodError

php - PHP 中受密码保护的目录和文件

Android Keystore LoadStore 和 ProtectionParameter 实现实例?

Tomcat WebappClassloader 未被垃圾收集

java - 如何初始化使用自定义类加载器动态加载的类?

Java 嵌套 Map 到 Scala 嵌套序列

java - 如何多次水平打印二维数组

java - JVM静态变量

java - 如何使用 JDBC 根据多个条件过滤数据库记录?

javascript - javascript 可以访问/修改浏览器证书颁发机构吗?