Java Expression类中的execute()

Java Expression类中的execute(),java,reflection,applet,Java,Reflection,Applet,Java7中最新的安全漏洞,小程序可以在用户的计算机上执行不受信任的代码。有关更多信息,请访问 但我的问题是:有人提到,由于Expression类中引入了execute()方法,所有这些都是可能的。但它没有什么特别之处,这在以前的版本中是不可能的。资料来源如下: @Override public void execute() throws Exception { setValue(invoke()); } 对于自java1.4以来存在的getValue(): public Obje

Java7中最新的安全漏洞,小程序可以在用户的计算机上执行不受信任的代码。有关更多信息,请访问

但我的问题是:有人提到,由于Expression类中引入了execute()方法,所有这些都是可能的。但它没有什么特别之处,这在以前的版本中是不可能的。资料来源如下:

 @Override
public void execute() throws Exception {
    setValue(invoke());
}
对于自java1.4以来存在的getValue():

 public Object getValue() throws Exception {
    if (value == unbound) {
        setValue(invoke());
    }
    return value;
}

getValue()完成execute()所做的一切。那么为什么要对execute方法如此大惊小怪呢???

如果仔细观察,利用漏洞的代码也会调用
.getValue()
。显然,该漏洞存在于
invoke
execute
本质上是一个公共接口,用于调用私有的
invoke

如果仔细观察,利用漏洞的代码也会调用
.getValue()
。显然,该漏洞存在于
invoke
execute
本质上是一个调用私有
invoke

的公共接口。几年前,我报告了一个bug,其中访问签入表达式与编译器的不完全相同。这可能是另一个例子。

几年前我报告了一个bug,其中访问签入表达式与编译器的不相同。这可能是另一个例子。

是的,对。getValue()也是如此,它早在java7之前就存在了。问题是为什么它只因java7而出名:)@Jatin:Java6没有同样的安全缺陷吗?是的,这就是我要说的。这只是一个确认,但在Java6中不起作用。来源看起来很相似。我无法在此结束讨论。是的,没错。getValue()也是如此,它早在java7之前就存在了。问题是为什么它只因java7而出名:)@Jatin:Java6没有同样的安全缺陷吗?是的,这就是我要说的。这只是一个确认,但在Java6中不起作用。来源看起来很相似。我无法在此结束讨论。