Android HTTPS安全漏洞分析

在开发中,涉及敏感信息的传输我们都会使用HTTPS协议来和服务端进行安全的通信,但如果在实现时对HTTPS相关的API没有全面的掌握,导致代码编写中出现很多安全漏洞,其中以数字证书的使用最为典型,从而导致中间人攻击。

漏洞的形式主要有如下三种:

  • 1.自定义X509TrustManager未实现安全校验
  • 2.自定义HostnameVerifier默认接受所有域名
  • 3.SSLSocketFactory信任所有证书

1.自定义X509TrustManager未实现安全校验

使用HttpURLConnection发起HTTPS请求时,需要提供一个自定义的X509TrustManager。如果实现不当,可能引入安全问题,如下所示是存在风险的代码。

import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.X509TrustManager;

public class HxHTTPSTrustManager implements X509TrustManager {
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        //默认接受任意的客户端证书
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        //默认接受任意的服务端证书
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return new X509Certificate[0];
    }
}

Android系统的共享证书机制规定,如果目标URL服务器下发的证书不在已信任证书列表中,或者该证书不是权威机构颁发的而是自签名的,那么会出现SSLHandshakeException异常。正确的做法应该是提供与服务器对应的证书,并进行校验,语句如下。

未完。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值