以下是我的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());
  }

07-26 03:26