Java 如何处理作为输入参数出现的易受攻击的代码?

How does Java handle vulnerable code coming as input arguments?

当作为用户输入传递时,jvm 如何处理 'System.exit()' 等易受攻击的代码?

Java 没有像 Java 脚本中的 eval() 那样的功能,用于即时执行 Java 代码。

加载代码只有两种可选方式:

  1. 如果应用允许从用户定义的文件(例如使用 ClassLoader)加载编译代码(Java classes)
  2. 如果应用程序使用 ObjectInputStream 反序列化数据(以及相应的 class 字节码,其中包含)。

这两种方式都容易受到恶意代码的攻击,因此加载的代码可以执行任何操作。

Java 提供的唯一方法是安全管理器 - 主要用于 Java 小程序。但是,恕我直言,这种方式已经过时,因为总有一种方法可以绕过安全管理器的限制。 Java 小程序如今已过时的主要原因之一。