我目前正在阅读 CERT Secure Coding Standard for Java .
我正在为此苦苦挣扎rule 。此规则的严重性很高,这意味着违反此规则可能会导致权限升级或代码执行。
我真的不明白违反这条规则怎么会导致如此致命的事情。有人可以举例说明对违反此规则的代码进行攻击吗?
最佳答案
您可能在类的构造函数中建立了一个不变量,例如那date
包含实例的创建时间:
class Foo {
private final Date date;
Foo() { this.date = new Date(); }
Date getDate() { return date; }
}
现在,如果我调用getDate().setTime(0)
,我可以使实例看起来像是在 1970-1-1 00:00:00Z
创建的.
如果您有一些基于 Foo
的创建日期的逻辑,可以通过这种方式操纵它以实现不同的行为。
关于java - 对私有(private)类成员的引用怎么可能是危险的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375990/