iOS中的弱SSL认证

在开发过程中,开发人员使用测试或自签名的 SSL 证书构建应用程序。 这样开发人员无需正式请求和验证 SSL 证书即可测试 HTTPS 功能。 然而,大多数情况下会保留使用自签名证书的代码,这会导致基于 HTTPS 的 Man-In-The-Middle (MITM) 攻击。

以下代码允许所有 HTTPS 连接的任意 HTTPS 证书

     //NSURLRequest+IgnoreSSL.h
        @interface NSURLRequest (IgnoreSSL)
         
        + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
         
        @end 
     //NSURLRequest+IgnoreSSL.m
	    implementation NSURLRequest (IgnoreSSL)
    	
	    + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
	    {
	        return YES;
	    }
    	
	    @end

也可通过调用私有方法setAllowsAnyHTTPSCertificate,设置为YES,来绕过SSL认证

        @interface NSURLRequest (DummyInterface)  
        + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;  
        + (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;  
        @end 
        [NSURLRequest setAllowsAnyHTTPSCertificate: YES forHost:[payURL host]];


一般对HTTPS实施中间人攻击是在http协议转为https协议过程中切入,攻击者代理客户端与服务器进行https加密通信,攻击者再把加密的信息解密后直接以http协议跟客户端通信。但这很容易通过地址栏识别。如果允许所有 HTTPS 连接的任意 HTTPS 证书,攻击者就可以伪造证书。以下是一个Java实现的中间人代理研究模型,它与https服务器建立https连接,得到认证证书,并伪造该证书发送给客户端,如果客户端信任该伪造该证书,则该中间人代理研究模型就能控制客户端和服务器的所有通信。

以下是使用它代理修改CSDN个人资料的截图:

添加了该伪造证书,看起来还真像

如果你已经启用了https协议,那就不要因为偷一下懒或图方便去使用弱SSL认证,中间人代理攻击就会让你的https安全协议屁都不是。

参考

[1]. 中间人代理攻击的Java研究模型 http://crypto.stanford.edu/ssl-mitm/

[2].https://www.owasp.org/index.php/Man-in-the-middle_attack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值