SONAR违规问题 - “Serializable”类中的字段应该是瞬态的或可序列化的squid:S1948

时间:2017-12-06 13:25:41

标签: java serialization sonarqube transient

我的严重声纳违规并且不知道如何解决。请帮忙。

  

“Serializable”类中的字段应该是瞬态的或可序列化的(squid:S1948)

     

Serializable类中的字段本身必须是Serializable或transient,即使该类从未显式序列化或反序列化。这是因为在负载下,大多数J2EE应用程序框架将对象刷新到磁盘,而具有非瞬态,不可序列化数据成员的涉嫌Serializable对象可能导致程序崩溃,并为攻击者打开大门。   此规则在非Serializable字段和集合字段上引发了一个问题,当它们不是私有时(因为它们可以在外部分配非Serializable值),以及在类中为它们分配非Serializable类型时。

规则说所有对象必须序列化或传输,我们不想让它传输,因为我们将它保存到activity,这个成员是“Object”类的类型,我们不能让他序列化。

示例类:

public class CharacteristicData implements ICharacteristicData, Serializable {

  Object val;
  String code;
  Class<?> type; // Qualified class name
  boolean isMandatory;
  .........................

此类表示属性。我们只能在运行时告诉它的类型(字符串,日期,数字等......)

0 个答案:

没有答案