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

Posted

技术标签:

【中文标题】如何加载用户类文件以确保其安全?【英文标题】:how to load a user class file to make sure it's safe? 【发布时间】:2013-11-19 07:52:53 【问题描述】:

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

【问题讨论】:

我对 Java 不太熟悉,但也许这会有所帮助:***.com/questions/3947558/… 【参考方案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";
;

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

点击 Michael 对您的问题的评论的链接,了解 Java 安全架构的一些实际使用情况。

【讨论】:

以上是关于如何加载用户类文件以确保其安全?的主要内容,如果未能解决你的问题,请参考以下文章

JVM:Tomcat中的类加载

java安全——类加载和Unsafe类(ClassLoader,URLClassLoader)

java安全——类加载和Unsafe类(ClassLoader,URLClassLoader)

java安全——类加载和Unsafe类(ClassLoader,URLClassLoader)

java安全——类加载和Unsafe类(ClassLoader,URLClassLoader)

[Java安全]类加载器ClassLoader