我的dto类中有以下代码。
public void setBillDate(Date billDate) { this.billDate = billDate; }
我在这样的声纳中得到一个错误,我不确定在这里做错了什么。
Malicious code vulnerability - May expose internal representation by incorporating reference to mutable object
该类是dto,该方法是自动创建的setter方法。我在这里做错了。如果有人可以解释。这将是一个很大的帮助。
Date
使用该setter,某人可以 无意中* 从外部修改日期实例 *
考虑一下
class MyClass { private Date billDate; public void setBillDate(Date billDate) { this.billDate = billDate; } }
现在有人可以设置它
MyClass m = new MyClass(); Date dateToBeSet = new Date(); m.setBillDate(dateToBeSet); //The actual dateToBeSet is set to m dateToBeSet.setYear(...); //^^^^^^^^ Un-intentional modification to dateToBeSet, will also modify the m's billDate
为避免这种情况,您可能需要在设置之前进行 深度复制
public void setBillDate(Date billDate) { this.billDate = new Date(billDate.getTime()); }