【Android安全】https安全:HostnameVerifier

这篇具有很好参考价值的文章主要介绍了【Android安全】https安全:HostnameVerifier。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HostnameVerifier接口

HostnameVerifier的作用

HostnameVerifier接口用于验证 当前已建立的连接的hostname(参数一)和连接的SSLSession(参数二)的证书是否匹配。
其目的是防止中间人攻击。

HostnameVerifier的定义

HostnameVerifier接口定义如下:

 public abstract interface HostnameVerifier
 {
   public abstract boolean verify(String paramString, SSLSession paramSSLSession);
 }

仅一个方法,参数paramString为当前connection的hostname;参数paramSSLSession是当前connection的SSLSession,可以从中获取到证书列表。

verify方法的默认实现如下:

@Override
    public boolean verify(final String host, final SSLSession session) {
        try {
            final Certificate[] certs = session.getPeerCertificates();
            final X509Certificate x509 = (X509Certificate) certs[0];
            verify(host, x509);
            return true;
        } catch (final SSLException ex) {
            if (log.isDebugEnabled()) {
                log.debug(ex.getMessage(), ex);
            }
            return false;
        }
    }

verify方法可以由app开发者自行实现。如果实现不恰当,例如永远返回true,则有安全风险。

反例:
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);
          }
  }
}

参考:
如何解决 HostnameVerifier 不安全的问题?
https://blog.csdn.net/u010358168/article/details/83548639

Java的HostnameVerifier
https://www.jianshu.com/p/ad4c7ce94518

https://www.cnblogs.com/yufecheng/p/10968045.html
https://www.jianshu.com/p/ad4c7ce94518文章来源地址https://www.toymoban.com/news/detail-614852.html

到了这里,关于【Android安全】https安全:HostnameVerifier的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android系统安全 — 6.2 Ethernet安卓架构

    整个Ethernet系统架构如下图所示: 以太网服务(EthernetService)的启动与注册流程; 应用层调用使能ethernet功能的方法流程来分析,从应用层如何将指令一步一步传到底层kernel; 底层kernel如何一步一步上报Uevent(例如网线的插拔等)给framework层实现。 由SystemServer启动的时候生

    2024年02月10日
    浏览(46)
  • HTTPS 为什么是安全的 _ (下),掌握了这些Android高级工程师必备知识

    证书 的目的是确保公钥的合法性,它的本质就是为公钥加上数字签名。它的安全性由证书链顶端的根证书来保证。 如果你对这几个工具还不是很熟悉,就无法彻底的了解 HTTPS 的通信流程,不妨再阅读一遍 HTTPS 为什么是安全的 ? (上) 。 有了这些前置知识,下面就来深入剖析

    2024年04月11日
    浏览(58)
  • [Android Studio] 导入安卓Android项目教程

    A项目指:要导入的项目;B项目指自己电脑上可以运行的项目 根据步骤一步一步来,别急。 将要导入的项目(简称为A)根目录下的这些文件删掉:.gradle、.idea 、.iml后缀的文件、 local.properties 进入app文件夹,将这些文件删掉:build、.iml后缀的文件 打开一个你在自己电脑上可

    2024年02月04日
    浏览(44)
  • 安卓android记单词软件

    课程设计项目总结,基于安卓的记单词软件,分为前端和服务器端,前端使用安卓,后端使用SSM框架。 具体技术栈为: 前端:android、okhttp、sqlite、litepal等 后端:SSM(SpringMVC+Spring+Mybatis)、mysql数据库、tomcat服务器等 项目的总体介绍 基于安卓的记单词软件,用户在第一次使用的时

    2024年02月05日
    浏览(36)
  • 安卓Android开发快速入门

    配合天哥视频食用更佳:【天哥】Android开发视频教程最新版 Android Studio开发 LinearLayout(线性布局) 可嵌套 最常用属性 id 起标记布局的作用 layout_width [wrap_content根据内容选择大小、match_parent匹配父级、具体数值(单位-dp)] layout_height layout_weight 权重,按照权重比例分配父级

    2023年04月16日
    浏览(41)
  • 安卓学习笔记:安卓11访问/读写 Android/data 目录

    省流提示:采用android studio工具开发,记录一次低级的开发,避免以后忘记或者踩坑。 最近有个业余项目开发到一小半,过程中需要读写 Android/data目录的文件,采用常规的文件操作总是提示权限被拒绝,无奈上网参考了很多资料,终于得到了解决。 无法访问Android/data 的原因

    2024年02月13日
    浏览(42)
  • 安卓进阶之android系统架构

    安卓进阶躲不开阅读源码和深入了解安卓的底层,这是一篇入门级别的文章,可以对安卓架构有个大体的认识。 首先要理解andriod和AOSP的关系,我们日常开发的安卓跟市面上的安卓不是一个意思,我们开发的是安卓app,市面上的安卓其实是安卓系统。 维基百科: Android 是基于

    2023年04月12日
    浏览(41)
  • Android studio 设置安卓手机

    参考这个链接 ghttps://developer.android.com/studio/debug/dev-options 列出常用手机的设置,但是我的手机不在此列 Google Pixel Settings    About phone    Build number Samsung Galaxy S8 and later Settings    About phone    Software information    Build number LG G6 and later Settings    About phone    Software info    Bui

    2024年02月13日
    浏览(38)
  • 【android】安卓大作业「课程日历」

    项目: 课程日历 -项目概况: 项目记录一周的课程信息。 •用户可以编辑周一~周五的课程表( 每天最多安排5门课程 ) ; •用户可以按日查看课程表。 -项目要求: •项目包含2个活动及其对应的布局: ① 显示课程活动:单击“周一”~“周五”按钮中的一个,按时间顺

    2024年02月04日
    浏览(39)
  • Android Studio连接安卓手机

    点击右上角红框的【SDK Manager】-【SDK Tools】。 也可以在 【tools】-【SDK Manager】-【SDK Tools】下进入。 点击Google USB Driver,下载后点ok。 右键【我的电脑】-【高级系统设置】-【环境变量】,新建变量【Android_Home】; 值为:C:UsersHuoAppDataLocalAndroidSdk;C:UsersHuoAppDataLocalAnd

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包