将非序列化对象存储为HttpSession属性是否合适?

时间:2017-01-18 14:41:07

标签: java java-ee serializable httpsession fortify

我正在使用强化网络应用程序,它指出了以下代码的问题,因为方法addToSession()将非可序列化对象存储为HttpSession属性,这可能会损害应用程序的可靠性。

public class DataGlob {
   String globName;
   String globValue;

   public void addToSession(HttpSession session) {
     session.setAttribute("glob", this);
   }
}

并建议我做以下事情。

public class DataGlob implements java.io.Serializable {
   String globName;
   String globValue;

   public void addToSession(HttpSession session) {
     session.setAttribute("glob", this);
   }
}

我是否需要按照推荐的方式更改代码,否则无需更改就可以了?

2 个答案:

答案 0 :(得分:1)

建议在会话中存储的所有属性都是可序列的。它不是必需的,但将来可能会有用。

为了支持故障转移,应用程序服务器可以将会话数据保留在磁盘上或通过网络传输,以便群集中的另一个节点可以继续为会话提供服务。为了支持这一点,会话中存储的所有数据都需要可序列化。

答案 1 :(得分:0)

which python内容应该是可序列化的,以使容器能够将会话存储到磁盘或将会话转移到群集中的另一个节点。
因此,最好使您的类Serializable避免以后出现序列化问题。