当我运行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扫描时,即使我完成了验证,它仍会在同一行显示问题。如何删除强化错误。
答案 0 :(得分:0)
为了回答你,让我解释一下Fortify如何检测这个问题,为什么包含它,然后该怎么做。
Fortify如何检测到这个问题:它基本上是一个超级grep。它只是找到你正在使用java.net.InetAddress.getLocalHost()。getHostName()和抱怨的任何地方。它不受数据验证的影响。
为什么这样?因为此功能有时用于安全目的,所以不应该这样。例如,假设开发人员想要信任来自他们自己域的所有消息,他们可能会使用它来确定消息的来源。但是,他们的系统的安全性依赖于DNS,这是不安全的。 (有关详细信息,请参阅详细信息选项卡。)
该怎么做:首先,确保您尝试使用java.net.InetAddress.getLocalHost()。getHostName()安全。基本上,您并没有尝试使用此代码来保护您的系统。然后忽略这个发现。在我帮助的大多数公司,你会写一个简短的解释为什么这个代码没问题,把它放在问题摘要选项卡的注释字段中,并将分析标记为“不是问题”。在某些地方,你也可以压制它。如果你得到了大量这些,你可以创建一个过滤器,它将淘汰整个类别,但要意识到你也可能会淘汰一些真正的问题。
信息来源:Fortify Software 2008-2010的顾问,自那时起担任独立应用安全顾问。