fortify代码分析结果分析(一)
(2009-11-30 11:35:12)
标签:
it |
分类: java基础 |
以下为本次代码分析工具FORTIFY对代码的分析结果。这些问题虽然古老、简单然而经典,也是需要引起重视。
代码问题主要集中在如下类别:存在安全隐患、存在资源泄漏隐患、序列化问题、字符串比较、异常处理问题,以及其它一些BAD PRACTICE和粗心引起的问题。
1.J2EE Bad Practices: Non-Serializable Object Stored in Session (Time and State, Structural)
把一个不可序列化的对象作为
代码示例
SharerInfo sharerInfo = new SharerInfo();
getServletRequest().getSession().setAttribute( “sharerInfo”, shareInfo);
其中SharerInfo类没有实现序列化(implements java.io.Serializable)
分析
对于不需要将对象序列化到同一jvm以外的应用场景,以上代码没有问题。然而考虑到系统的扩展性,以上问题应该予以避免。
以下是一些常见的会导致问题的场景:
1.
在一些大型应用系统的实现里,会考虑将部分SESSION里的对象钝化到数据库、磁盘里。
2.
在非session-sticky的集群环境里,应用服务器会在集群里广播、复制session数据
修正
2.Unreleased Resource
程序可能无法成功释放某一项系统资源
代码示例
Connection con = jdbcTemplate.getDataSource().getConnection();
}
Con.close();
分析
3. Mutable static field
将业务上不可变的静态值作为非final属性直接暴露给调用者
代码示例
public static
static {
}
分析
修正