java:构造函数直接存储用户提供的数组时的安全性以外的含义
我在工作中对一个项目运行了Sonar,发现一个违反“用户提供的阵列是直接存储的”。java:构造函数直接存储用户提供的数组时的安全性以外的含义,java,arrays,security,sonarqube,Java,Arrays,Security,Sonarqube,我在工作中对一个项目运行了Sonar,发现一个违反“用户提供的阵列是直接存储的”。 因此,在深入了解这到底意味着什么时,我遇到了很多从安全角度讨论它的东西()。因此,当我读到或听到“安全”时,我想到的是恶意、破解、数据泄露和其他严重后果。 但我想知道还有什么会出错,特别是在负载平衡环境中。这是否是担心跨会话数据污染的原因?一个客户订单数据被别人的详细信息等损坏了? < P>基本上,如果你把java API暴露给世界其他地方,你应该认为这个规则非常重要。您提供的链接完美地解释了原因(如果您不克隆阵
因此,在深入了解这到底意味着什么时,我遇到了很多从安全角度讨论它的东西()。因此,当我读到或听到“安全”时,我想到的是恶意、破解、数据泄露和其他严重后果。
但我想知道还有什么会出错,特别是在负载平衡环境中。这是否是担心跨会话数据污染的原因?一个客户订单数据被别人的详细信息等损坏了? < P>基本上,如果你把java API暴露给世界其他地方,你应该认为这个规则非常重要。您提供的链接完美地解释了原因(如果您不克隆阵列,API的使用者可以随时更改阵列)
如果在您的内部实现中发生冲突(其他人永远不会接触或使用),您可以降低冲突的严重性,因为第三方代码不会修改阵列。但是,不要忘记代码是生存和发展的,有一天甚至你的内部类也可能暴露在世界其他地方。 < P>基本上,如果你把java API暴露给世界其他地方,你应该认为这个规则非常重要。您提供的链接完美地解释了原因(如果您不克隆阵列,API的使用者可以随时更改阵列)
如果在您的内部实现中发生冲突(其他人永远不会接触或使用),您可以降低冲突的严重性,因为第三方代码不会修改阵列。但是,不要忘记代码是存在和发展的,有朝一日,甚至您的内部类也可能会向世界其他地方公开。这完全取决于类的工作方式和调用方式。然而,这通常不是一个好主意。在我看来,它只是一个bean,可序列化,没有业务逻辑,似乎用于web服务上下文中。这完全取决于类的工作方式和调用方式。然而,这通常是一个坏主意。在我看来,它只是一个bean,可序列化,其中没有业务逻辑,似乎在web服务上下文中使用。