执行存储在字符串中的Java代码

执行存储在字符串中的Java代码,java,Java,我想知道是否有可能将Java代码发送到servlet并执行它 例如,我将发送一段代码作为String,它将被添加并执行。有人能想出一个办法来解决这个问题吗 JDK中的tools.jar包含编译Java代码的类(由Ant等使用),如果需要,还可以使用Eclipse编译器。这是可能的,但从安全角度(代码注入等)来看,这将是一场灾难;) JDK中的tools.jar包含编译Java代码的类(由Ant等使用),如果需要,还可以使用Eclipse编译器。这是可能的,但从安全角度(代码注入等)来看,这将是一

我想知道是否有可能将Java代码发送到servlet并执行它


例如,我将发送一段代码作为
String
,它将被添加并执行。有人能想出一个办法来解决这个问题吗

JDK中的tools.jar包含编译Java代码的类(由Ant等使用),如果需要,还可以使用Eclipse编译器。这是可能的,但从安全角度(代码注入等)来看,这将是一场灾难;)

JDK中的tools.jar包含编译Java代码的类(由Ant等使用),如果需要,还可以使用Eclipse编译器。这是可能的,但从安全角度(代码注入等)来看,这将是一场灾难;)

这当然是可能的-您可以发送已编译的字节码Base64 encoded,然后在servlet中对其进行解码,并使用类加载器加载它

或者您可以发送一个类似编码的JAR文件,将其保存到磁盘,并将其添加到自定义URLClassLoader

但是,如果代码不可信,您可能会遇到严重的安全问题


请参见

这当然是可能的-您可以发送已编译的字节码Base64 encoded,然后在servlet中对其进行解码并使用类加载器加载它

或者您可以发送一个类似编码的JAR文件,将其保存到磁盘,并将其添加到自定义URLClassLoader

但是,如果代码不可信,您可能会遇到严重的安全问题


请参见

Related:您能否更详细地解释一下您的用例,特别是为什么要在运行时执行
字符串
?(这是一种非常严重的代码气味…)相关:您能更详细地解释一下您的用例吗,特别是为什么您要在运行时执行
字符串
?(这是一种相当严重的代码气味…)但从安全角度(代码注入等)来看,这将是一场灾难;那为什么要提到它呢?因为信仰自由选择;)但从安全角度(代码注入等)来看,这将是一场灾难;那为什么要提到它呢?因为信仰自由选择;)