我想知道将Java代码发送到servlet将采取并执行它的servlet的可能性?
例如,我会将一大块代码发送为String
,这些代码将被添加并执行。任何人都可以想办法如何处理这个问题吗?
答案 0 :(得分:1)
这当然是可能的 - 你可以发送编译后的字节码Base64编码,然后在servlet上解码它并使用类加载器加载它。
或者您可以发送类似编码的jarfile,将其保存到磁盘并将其添加到自定义URLClassLoader。
但是,如果代码不受信任,则可能会遇到重大安全问题。
请参阅What are the security risks I should guard against when running user-supplied Java code?
答案 1 :(得分:0)
tools.jar包含用于编译Java代码的类(由Ant等使用),如果需要,还可以使用Eclipse编译器。这是可能的,但从安全的角度来看(代码注入等),这将是灾难;)