Java的HostnameVerifier

[强制]在实现的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;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,475评论 0 6
  • 前言 在我们的App进行网络请求时,经常会遇到断网,重连,数据流量和WIFI变化等情况,那么我们要怎么去判断当前的...
    FynnJason阅读 19,443评论 1 11
  • —1— 骄傲最终在你怀里投降 我不顾一切地想把什么都给你 柔情蜜意给你,风情万种给你 苦痛与欢愉通通都给你 衣服的...
    一只凤梨阅读 202评论 0 2
  • 今天刚读完东野圭吾的《时生》,老实说,这本书对我的感触并不如东野圭吾其他的书对我的感触那般大。 对书中的主角,宫本...
    日月同光阅读 623评论 0 0