Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在工作中的一个项目上运行了 Sonar,发现了“用户提供的数组直接存储”的违规行为。 因此,更深入地了解这究竟意味着什么,我遇到了很多从安全角度讨论它的东西(例如......)。因此,当我阅读或听到“安全”时,我会想到恶意、破解、数据泄露和其他严重后果。 但我想知道还有什么可能出错,尤其是在负载平衡环境中。这会是担心跨会话数据污染的原因吗?一位客户的订单数据被其他人的详细信息损坏,等等?
基本上,如果您将 Java API 公开给世界其他地方,您应该认为这条规则非常重要。您提供的链接完美地解释了原因(如果您不克隆它,您的 API 的使用者将能够随时更改数组)。
如果在您的内部实现中发生违规行为(其他人永远不会接触或使用),您可以降低违规的严重性,因为第三方代码没有修改数组的风险。但是,不要忘记代码是存在和发展的,有朝一日,甚至您的内部类也可能会暴露给世界其他地方。