jvm如何在作为用户输入传递时处理像"System.exit(("这样的易受攻击的代码?
Java在JavaScript中没有像eval()
那样的功能来动态执行Java代码。
只有两种加载代码的替代方法:
- 如果应用程序允许从用户定义的文件加载编译的代码(Java类((例如使用ClassLoader(
- 如果应用程序使用
ObjectInputStream
来反序列化数据(以及包含的对应类字节码(
这两种方式都容易受到恶意代码的攻击,因此加载的代码可以执行任何操作。
Java提供的唯一方法是安全管理器,它主要用于Java Applets。然而,这种方式已经过时了,因为总有一种方法可以绕过安全管理器的限制。Java小程序如今已经过时的主要原因之一。