java - 安全性 - 方法返回内部数组 - Sonar 安全警告 - 即使我返回克隆

标签 java security sonarqube

即使我没有返回原始数组而是它的克隆,下面的返回语句也会给我一个 Sonar 安全警告。

执行此操作的“正确”方法是什么?

public String[] getList() {
        return list!=null? list.clone():null;
}

最佳答案

编辑了我之前的答案,发现了一些明显的错误:)

List.clone() 不起作用,因为它返回列表的浅拷贝。所以基本上它只是返回对原始列表的引用。我们不希望这里出现这样的情况。我们想要的是一个全新的数组,它没有返回相同的引用。 为此,最好的想法始终是创建一个新数组并运行一个 for 循环,如下所示:

String[] newArr = new String[list.length];
int i = 0;
for (String s : list) {
    newArr[i++] = s
}

如果您想知道为什么会出现此问题,请参阅此 answer :)

关于java - 安全性 - 方法返回内部数组 - Sonar 安全警告 - 即使我返回克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29895191/

相关文章:

java - 公共(public)字符串 - 无法解析

java - 在第一次迭代时返回正确,在任何其他迭代中返回不正确,java

rest - 保护 SPA 后面的 REST API 防止数据被盗

c - 为什么这段代码容易受到缓冲区溢出攻击?

java - 如何将我的 NetBeans 项目加载到 sonarqube 中?

maven - 在 Maven 项目中分析 TypeScript SonarQube

javax.crypto.IllegalBlockSizeException : last block incomplete in decryption exception

java - 如何限制 EJB 实例的数量?

security - bcrypt 对大型网站可行吗?

java - 如何为 Sonar 配置另一个与默认版本不同的java版本?