FindBugs 提出了一个名为EI_EXPOSE_REP的错误,其描述如下:
EI:可能通过返回对可变对象的引用来公开内部表示
返回对存储在对象字段之一中的可变对象值的引用会公开对象的内部表示。如果实例由不受信任的代码访问,并且对可变对象的未经检查的更改会危及安全性或其他重要属性,则您将需要做一些不同的事情。在许多情况下,返回对象的新副本是更好的方法。
关于 SO ( 1、2和3 ) 的几个问题已经解决了如何避免此类错误,我理解这是防止修改不可变对象的开发最佳实践但是我不清楚为什么此类错误属于 MALICIOUS_CODE 类别.
这背后的真正威胁是什么?
如果这是一个恶意代码问题,攻击者几乎可以做任何他想做的事情,而可变性不会是最大的问题。如果它是一个漏洞,那么只有在执行不受信任的代码时才能利用它,而且我看不到任何符合这种情况的用例。
对此有何看法?
谢谢 !