【问题标题】:java: implications other than security when constructor stores user-supplied array directlyjava:构造函数直接存储用户提供的数组时的安全性以外的影响
【发布时间】:2013-01-04 15:56:47
【问题描述】:

我在工作中的一个项目上运行 Sonar,发现违反“用户提供的数组直接存储”。
因此,更深入地了解这究竟意味着什么,我遇到了很多从安全角度讨论它的东西 (for example...)。因此,当我阅读或听到“安全”时,我会想到恶意、破解、数据泄露和其他严重后果。
但我想知道还有什么可能出错,尤其是在负载平衡环境中。这会是担心跨会话数据污染的理由吗?一位客户的订单数据被其他人的详细信息等破坏?

【问题讨论】:

  • 这将取决于确切地类的工作方式和调用方式。但是,这通常是个坏主意。
  • 在我看来只是一个 bean,可序列化,其中没有业务逻辑,似乎用于 Web 服务上下文。

标签: java arrays security sonarqube


【解决方案1】:

基本上,如果您将 Java API 公开给世界其他地方,您应该认为这条规则非常重要。您提供的链接完美地解释了原因(如果您不克隆它,您的 API 的使用者将能够随时更改数组)。

如果在您的内部实现中发生违规行为(其他人永远不会接触或使用),您可以降低违规的严重性,因为第三方代码不存在修改数组的风险。但是,不要忘记代码是存在和发展的,有朝一日,甚至您的内部类也可能会暴露给世界其他地方。

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2019-03-18
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    相关资源
    最近更新 更多