fortify——J2EE Bad Practices: Non-Serializable Object Stored in Session

来源:互联网 发布:淘宝买东西受骗怎么办 编辑:程序博客网 时间:2024/06/05 00:33

J2EE错误实践:存储在会话中的非可序列化对象

Explanation:
J2EE JVM JVM J2EE JVM HttpSession JVM JVM

public class DataGlob {String globName;String globValue;public void addToSession(HttpSession session) {session.setAttribute("glob", this);}}


Recommendations:

public class DataGlob implements java.io.Serializable {String globName;String globValue;public void addToSession(HttpSession session) {session.setAttribute("glob", this);}}

分析

对于不需要将对象序列化到同一jvm以外的应用场景,以上代码没有问题。然而考虑到系统的扩展性,以上问题应该予以避免。

以下是一些常见的会导致问题的场景:

1.       session对象存储到外部系统

在一些大型应用系统的实现里,会考虑将部分SESSION里的对象钝化到数据库、磁盘里。

2.       集群环境

在非session-sticky的集群环境里,应用服务器会在集群里广播、复制session数据

修正

   ShareInfo类应该实现序列化:implements java.io.Serializable


0 0
原创粉丝点击