美文网首页spring_boot
Java的HostnameVerifier

Java的HostnameVerifier

作者: AlanFu | 来源:发表于2018-05-08 19:26 被阅读0次
    [强制]在实现的HostnameVerifier子类中,需要使用verify函数效验服务器主机名的合法性,否则会导致恶意程序利用中间人攻击绕过主机名效验。

    说明:
    在握手期间,如果URL的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口实现程序来确定是否应该允许此连接,如果回调内实现不恰当,默认接受所有域名,则有安全风险。

    反例:
    HostnameVerifier hnv=new HosernameVerifier(){
      @Override
      public boolean verify(String hostname,SSLSession session){
          return ture;
      }
    }
    
    正例:
    HostnameVerifier hnv=new HosernameVerifier(){
    @Override
    public boolean verify(String hostname,SSLSession session){
        if("youhostname".equals(hostname)){
            return true;
        }else{
              HostnameVerifier        hv=HttpsURLConnection.getDefaultHostnameVerifier();
             return hv.verify(hostname,session);
              }
      }
    }
    
    

    在<阿里Android开发手册>看到这一条,记录一下。并查找一下关于HostnameVerifier的知识。

    一、概述
    位于javax.net.ssl包下。声明:public interface HostnameVerifier
    此类是用于主机名验证的基接口。
    在握手期间,如果 URL 的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。
    策略可以是基于证书的或依赖于其他验证方案。
    当验证 URL 主机名使用的默认规则失败时使用这些回调。
    二、方法
    public boolean verify(String hostname,SSLSession session)
    参数:
    hostname-主机名
    session - 到主机的连接上使用的 SSLSession
    返回值:
    如果主机名是可接受,则返回true;

    相关文章

      网友评论

        本文标题:Java的HostnameVerifier

        本文链接:https://www.haomeiwen.com/subject/bxiwrftx.html