首页 > 解决方案 > Java 如何处理作为输入参数的易受攻击的代码?

问题描述

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

标签: javasecuritystatic-analysis

解决方案


Java 没有像eval()JavaScript 那样动态执行 Java 代码的功能。

只有两种加载代码的替代方法:

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

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

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


推荐阅读