以下是我的SSL主机名验证程序的代码段。但是正如我从此方法返回无条件true
一样。声纳认为这是一个漏洞。我将如何解决这个问题?
SslClient sslClient = SslClient.localhost();
SSLSocketFactory socketFactory = sslClient.socketFactory;
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override public boolean verify(String s, SSLSession session) {
return true;
}
};
我想知道最好的方法。
答案 0 :(得分:3)
为什么您需要无条件返回true?如果那是Sonar所检测到的漏洞,则您不应该这样做,或者记录为什么在这种情况下它实际上是安全的。
就实现“某些”修复而言,look at the test cases用于该类。似乎要使用的实现是:
@Override public boolean verify(String a, SSLSession b) { return a.equalsIgnoreCase(b.getPeerHost()); }