【发布时间】:2012-12-16 23:24:51
【问题描述】:
FindBugs 提出了一个名为 EI_EXPOSE_REP 的错误,描述如下:
EI:可能通过返回对可变对象的引用来公开内部表示
返回对存储在对象字段之一中的可变对象值的引用会公开对象的内部表示。如果实例由不受信任的代码访问,并且对可变对象的未经检查的更改会危及安全性或其他重要属性,则您将需要做一些不同的事情。在许多情况下,返回对象的新副本是更好的方法。
关于 SO 的几个问题(1、2 和 3)已经解决了如何避免此类错误,我知道这是防止修改不可变对象的开发最佳实践,但尚不清楚我为什么这样的错误属于 MALICIOUS_CODE 类别。
这背后的真正威胁是什么?
如果是恶意代码问题,攻击者几乎可以做任何他想做的事,而可变性不会是最大的问题。如果它是一个漏洞,那么只有在执行不受信任的代码时才能利用它,而且我看不到任何符合这种情况的用例。
对此有何看法?
谢谢!
【问题讨论】:
-
Findbugs “安全”规则基于 Sun 的老式安全指南,主要针对小程序环境。它们没有太多用处,比如 web 应用或服务器应用。
-
@agelastic:我认为你的评论有点误导。说“安全”规则更适用于可能运行未经批准的代码的环境可能要好得多。
-
Chris Lively - 那些环境是什么?在 webapp 世界中,它是小程序。其他的呢?
标签: java security immutability findbugs