嗨,我收到了以下违规信息:
恶意代码漏洞-可能通过返回对可变对象的引用来公开内部表示
在我的代码中,我这样写
public String[] chkBox() {
return chkBox;
}
我们如何解决它。
当错误消息指出时,您正在返回内部状态(chkBox-很可能是对象内部状态的一部分,即使您没有显示其定义)
如果您-例如-
String[] box = obj.chkBox();
box[0] = null;
由于数组对象和所有Java对象一样都是通过引用传递的,因此这也将更改存储在对象内部的原始数组。
您最可能想解决的问题很简单
return (String[])chkBox.clone();
它返回数组的副本,而不是实际的数组。
我正面临一个问题,声纳,使用Java语言,下面的代码。声纳状态为“恶意代码漏洞——可能通过返回对可变对象的引用暴露内部表示”。 所有带有“primitive”[]的arrya都是可变的吗? 如何解决这个问题,仍然返回int数组? 如果不是int[],而是String[]、StringBuilder或AnyObject[]呢?解决方案是什么?
我得到声纳报告的以下违规行为:可能通过返回对可变对象的引用来暴露内部表示。 这是因为我从getter返回字符串[]。 我知道问题是什么,以及如何解决它,但通过stackoverflow上的几个线程,我注意到字符串[]和日期似乎发生了这种情况,例如: 恶意代码漏洞-通过返回对可变对象的引用可能暴露内部表示 恶意代码漏洞-通过合并对可变对象的引用,可能会暴露内部表示 但考虑到发生这种情况的原因,即返回
问题内容: 我的dto类中有以下代码。 我在这样的声纳中得到一个错误,我不确定在这里做错了什么。 该类是dto,该方法是自动创建的setter方法。我在这里做错了。如果有人可以解释。这将是一个很大的帮助。 问题答案: 易变 使用该setter,某人可以 无意中* 从外部修改日期实例 * 考虑一下 现在有人可以设置它 为避免这种情况,您可能需要在设置之前进行 深度复制
我的dto类中有以下代码。 我在声纳中发现了一个错误,我不确定我到底做错了什么。 类是dto,方法是自动创建的setter方法。我做错了什么。如果有人能解释的话。这将是一个很大的帮助。
在使用model class i时,会面临以下警告:-- 我的模特班 警告的描述:- 返回对存储在对象某个字段中的可变对象值的引用会暴露对象的内部表示。如果实例被不受信任的代码访问,并且对可变对象未经检查的更改会损害安全性或其他重要属性,那么您需要做一些不同的事情。在许多情况下,返回对象的新副本是更好的方法。 在上面的模型课中,我得到一个警告:处理这个问题的更好方法是什么??提前谢谢。。。
我正在使用一些旧代码的旧项目中工作,findbug给出了一个字节[]的以下错误。 FindBugs:可以通过合并对可变对象的引用来公开内部表示。该代码将对外部可变对象的引用存储到对象的内部表示中。 我想知道是否有人能帮助我理解处理此错误的正确方法? 编辑我理解这个错误的存在,我知道如何处理日期等问题。我只是有点困惑如何处理字节[]。