Java:构造函数直接存储用户提供的数组时,除安全性以外的其他含义



我在工作项目中运行Sonar,发现违反了'用户提供的数组是直接存储的'。
因此,在深入研究它的确切含义时,我遇到了许多从安全角度讨论它的内容(例如……)。因此,当我读到或听到"安全"这个词时,我想到的是恶意、破解、数据泄露和其他严重后果。但我想知道还有什么地方可能出错,尤其是在负载平衡环境中。这会成为担心跨会话数据污染的理由吗?一个客户的订单数据被别人的详细信息破坏了,等等?

基本上,如果您要向外界公开Java API,则应该将此规则视为非常重要的。你提供的链接很好地解释了为什么(如果你不克隆它,API的消费者可以随时更改数组)。

如果违反发生在您的内部实现中(没有其他人会接触或使用),您可以降低违反的严重程度,因为没有第三方代码可以修改数组的风险。然而,不要忘记代码是存在和发展的,有一天甚至你的内部类也可能会暴露给其他的人。

相关内容

最新更新