执行存储在String中的Java代码

时间:2012-02-21 20:28:16

标签: java

我想知道将Java代码发送到servlet将采取并执行它的servlet的可能性?

例如,我会将一大块代码发送为String,这些代码将被添加并执行。任何人都可以想办法如何处理这个问题吗?

2 个答案:

答案 0 :(得分:1)

这当然是可能的 - 你可以发送编译后的字节码Base64编码,然后在servlet上解码它并使用类加载器加载它。

或者您可以发送类似编码的jarfile,将其保存到磁盘并将其添加到自定义URLClassLoader。

但是,如果代码不受信任,则可能会遇到重大安全问题。

请参阅What are the security risks I should guard against when running user-supplied Java code?

答案 1 :(得分:0)

来自JDK的

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