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

时间:2018-07-23 20:11:23

标签: java security static-analysis

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

1 个答案:

答案 0 :(得分:3)

Java没有像JavaScript中的eval()这样的函数来即时执行Java代码。

只有两种方法可以加载代码:

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

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

Java提供的唯一方法是安全管理器-主要在Java Applet中使用。但是,此方法已过时,恕我直言,因为始终有一种绕过Security Manager限制的方法。如今Java小程序过时的主要原因之一。