[hyddd的Fortify SCA分析Java代码记录][Semantic]System Information Leak
2009-02-24 14:04 hyddd 阅读(4964) 评论(1) 编辑 收藏 举报先看一段代码:
//
}
catch (Exception e) {
e.printStackTrace();
}
当运行出现异常时,程序捕获异常并输出堆栈信息,问题就是出现在这里。
这里有两个问题:
1.你向别人输出了你的堆栈信息:
上面这段代码把堆栈信息输出到了Console上,如果是一个后端的程序还好些,看到这些信息的人都是“自己人”,而如果是前端程序,看到这些信息就会是用户!第一,你会给用户一个不好的感觉,第二,如果看到这段信息的是一个想要入侵你服务器/搞破坏的人,那么后果将不堪设想!
有入侵网站或者渗透经验的人都会有同感,在入侵一个网站时,你会尽量去获取网站的各种信息,其中一种手段就是激发异常,通过异常返回信息获取服务器的目录路径,数据库表信息等等。所以写网站的时候很重要一点是不要向用户返回过多的这类信息,特别是返回printStackTrace()这样的堆栈信息,更是危险行为。
这里Fortify主要想说明的也是这个问题。
2.另外一个问题是,如果这是一个后端的程序,你捕获到异常,不处理也不作Log记录,只输出到Console里面,也是不好的,笔记随着Console的刷新,异常记录会被冲掉,除非这是一段测试用的代码,否则,应该至少把exception输出到Log文件里,如果是前端程序,可以考虑Log内容加密,或者把异常信息发回服务器。
另外,[Data Flow]System Information Leak这里面描述的问题和本文要说明的问题比较类似,可以一起参考。
作者:hyddd
出处:http://www.cnblogs.com/hyddd/
本文版权归作者所有,欢迎转载,演绎或用于商业目的,但是必须说明本文出处(包含链接)。