针对强化错误的白名单解决方案不会删除强化错误

时间:2017-04-06 11:04:52

标签: fortify

当我运行fority扫描程序时,它报告经常在下面的行中滥用身份验证问题

  
    

主机名= java.net.InetAddress.getLocalHost()的gethostname();

  

我编写了一个函数,它将根据主机名的白名单验证此主机名,如下所示。

private String validateHost(String hostName)
        {
            String[] PossibleHosts = {"host1","host2","host2","host4","host5",};
            Integer myhostIndex = Arrays.asList(PossibleHosts).indexOf((hostName).toLowerCase());
            if(myhostIndex>=0){
                hostName = PossibleHosts[myhostIndex];
            } else {
                hostName = "";
            }
            return hostName;
        }

将由下线

调用
  

主机名= validateHost(java.net.InetAddress.getLocalHost()的gethostname());

但是当我下次运行fority扫描时,即使我完成了验证,它仍会在同一行显示问题。如何删除强化错误。

1 个答案:

答案 0 :(得分:0)

为了回答你,让我解释一下Fortify如何检测这个问题,为什么包含它,然后该怎么做。

Fortify如何检测到这个问题:它基本上是一个超级grep。它只是找到你正在使用java.net.InetAddress.getLocalHost()。getHostName()和抱怨的任何地方。它不受数据验证的影响。

为什么这样?因为此功能有时用于安全目的,所以不应该这样。例如,假设开发人员想要信任来自他们自己域的所有消息,他们可能会使用它来确定消息的来源。但是,他们的系统的安全性依赖于DNS,这是不安全的。 (有关详细信息,请参阅详细信息选项卡。)

该怎么做:首先,确保您尝试使用java.net.InetAddress.getLocalHost()。getHostName()安全。基本上,您并没有尝试使用此代码来保护您的系统。然后忽略这个发现。在我帮助的大多数公司,你会写一个简短的解释为什么这个代码没问题,把它放在问题摘要选项卡的注释字段中,并将分析标记为“不是问题”。在某些地方,你也可以压制它。如果你得到了大量这些,你可以创建一个过滤器,它将淘汰整个类别,但要意识到你也可能会淘汰一些真正的问题。

信息来源:Fortify Software 2008-2010的顾问,自那时起担任独立应用安全顾问。