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