代码改变世界

[hyddd的Fortify SCA分析Java代码记录][Data Flow]System Information Leak

2009-02-25 10:57  hyddd  阅读(4153)  评论(1编辑  收藏

会触发这个警报的代码有下面几种:

//Demo1
try
{
    
//
}
catch(Exception e){
    log.error(ex.getLocalizedMessage(),ex);
    
//
}


//Demo2
try{
    
//
}
catch(Exception e){
    System.out.println(
"xxx error:" +  e.getMessage());
}

//

上面的代码都一个共同的特点,就是他们把Exception里面的一些详细信息,输出到了log/Console上面,Fortify这里建议不要把这些详细信息输出,以免被攻击者作为攻击/入侵的参考资料,我们可以输出一些自己定义的信息去代替输出Exception里面的详细信息。

  以上是Fortify的建议,个人认为,如果是后端程序,直接输出Exception的详细信息到log也无妨,因为可以方便开发人员发现问题,但是这里有个隐患是:万一服务器被入侵的,Log的有可能被入侵者修改或者盗取,从而获得更多的信息。如果是前端的程序,Exception可以考虑直接发回服务器,也可以把Log内容加密再记录下来,但返回给用户看的信息,建议还是参考Fortify的建议,输出自定义的信息代替输出Exception的详细信息。

  另外[Semantic]System Information Leak这里面描述的问题和本文要说明的问题比较类似,可以一起参考。