亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS安全:UIWebView訪問Https站點防止中間人攻擊

2019-11-14 18:08:23
字體:
來源:轉載
供稿:網友

盡管Https協議能夠提供數據的加密、身份的認證等安全服務,但并不是沒有漏洞。HTTPS協議安全隱患的存在可能使用戶受到各種極具破壞力的網絡攻擊。其中中間人攻擊(Man In The Middle, MITM)就是非常危險的一種攻擊方式。

場景分析:假設用戶手機接入了不安全的wifi,這時發生了dns被篡改的情況。如用戶訪問了Https://www.taobao.com, 被跳轉到了類似淘寶的釣魚站點,且該站點用的是真實ca證書,這時用戶的賬戶安全將受到巨大威脅。

這里介紹一個ios中能大大降低此類風險的做法,即公鑰證書匹配。

1. 在終端執行,openssl s_client -connect www.taobao.com:443 -showcerts ,獲取公鑰內容。

 0 s:/C=CN/ST=ZheJiang/L=HangZhou/O=Alibaba (China) Technology Co., Ltd./CN=*.tmall.com   i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - G2-----BEGIN CERTIFICATE-----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-----END CERTIFICATE-----

2. 將公鑰內容(-----BEGIN CERTIFICATE----- 至-----END CERTIFICATE-----)保存成.PEM格式文件。

3. 執行命令 openssl x509 -inform PEM -outform DER -in cert.pem -out cert.der , 將.pem證書轉換成.der格式。

4. 在app工程中,導入生成好的.der證書。

5. 在實現UIWebViewDelegate 的View Controller.h中添加

@interface TargetViewController : UIViewController<UIWebViewDelegate, NSURLConnectionDelegate, NSURLConnectionDataDelegate>

6. 在init方法中添加讀取證書的邏輯,并存到self.trustedCerts數組中

        

        //讀取ssl證書信息        if (!hasReadLocalCerts) {            certsFile = [NSMutableArray arrayWithObjects: @"taobao.com.der", nil];            self.trustedCerts = [NSMutableArray array];            for (NSString *file in certsFile) {                NSString *fpath = [[NSBundle mainBundle] pathForResource:file ofType:@"der"];                NSData * cerData = [NSData dataWithContentsOfFile:fpath];                SecCertificateRef certificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)(cerData));                [self.trustedCerts addObject:CFBridgingRelease(certificate)];            }            hasReadLocalCerts = YES;        }        

 

7. 在

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request

 navigationType:(UIWebViewNavigationType)navigationType

方法中添加https站點的處理邏輯:

    NSURL *url = [request URL];    NSString *schema = [[url scheme] lowercaseString];
   //未有過證書驗證,將失敗的請求紀錄下來
if ([schema isEqualToString:@"https"]){ if (!authenticated) { NSLog(@"Authenticated failed!"); [self.webView stopLoading]; failedRequest = request; [[[NSURLConnection alloc] initWithRequest:request delegate:self] start] ; return NO; }   return YES; }

 

8. 實現證書驗證

#PRagma mark ------ NSURLConnectionDelegate- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{    NSLog(@"Check ssl cert.");        //獲取trust object    SecTrustRef trust = challenge.protectionSpace.serverTrust;    SecTrustResultType result;        //這里將之前導入的證書設置成下面驗證的Trust Object的anchor certificate    SecTrustSetAnchorCertificates(trust, (__bridge CFArrayRef)self.trustedCerts);        //SecTrustEvaluate會查找前面SecTrustSetAnchorCertificates設置的證書或者系統默認提供的證書,對trust進行驗證    OSStatus status = SecTrustEvaluate(trust, &result);    if (status == errSecSuccess &&        (result == kSecTrustResultProceed ||         result == kSecTrustResultUnspecified)) {            //驗證成功,生成NSURLCredential憑證cred,告知challenge的sender使用這個憑證來繼續連接            NSURLCredential *cred = [NSURLCredential credentialForTrust:trust];            [challenge.sender useCredential:cred forAuthenticationChallenge:challenge];            NSLog(@"SSL cert match!");        }    else {        //驗證失敗,取消這次驗證流程        [challenge.sender cancelAuthenticationChallenge:challenge];        NSLog(@"SSL cert missmatch!");    }        [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];}
#pragma mark ------ NSURLConnectionDataDelegate-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)pResponse {    authenticated = YES;    [connection cancel];
   //驗證通過,繼續執行之前被攔截下來的請求 [self.webView loadRequest:failedRequest];}

 

轉載請注明:

http://www.49028c.com/lijizhuang/p/4884868.html 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品一区二区网址| 亚洲色图第一页| 国产一区二区三区直播精品电影| 国产精品亚洲精品| 精品呦交小u女在线| 国产免费一区二区三区在线观看| 91成人天堂久久成人| 亚洲电影成人av99爱色| 日韩中文字幕免费看| 性亚洲最疯狂xxxx高清| 国产精品亚发布| 亚洲国产精品电影在线观看| 国内精品模特av私拍在线观看| 日韩电影免费在线观看| 国产精品欧美一区二区三区奶水| 久久精品国产亚洲一区二区| 欧美成人高清视频| 中文字幕日韩在线视频| 97碰碰碰免费色视频| 日韩精品中文字幕在线播放| 国产成人涩涩涩视频在线观看| 欧美成人精品在线观看| 日本一本a高清免费不卡| 久久久天堂国产精品女人| 国产精品高潮呻吟久久av无限| 亚洲欧美国产精品久久久久久久| 亚洲美女在线观看| 欧美日韩国产精品一区二区不卡中文| 国产一区二区黑人欧美xxxx| 国产成人精品免高潮费视频| 国产日韩欧美在线观看| 亚洲网站在线观看| 九九热这里只有精品免费看| 中文字幕精品一区久久久久| 亚洲日韩第一页| 亚洲女成人图区| 亚洲欧美日韩中文在线制服| 国产免费观看久久黄| 亚洲无亚洲人成网站77777| 成人免费看黄网站| 日韩美女av在线| 日韩最新在线视频| 国产自摸综合网| 久久精品91久久香蕉加勒比| 成人免费看吃奶视频网站| 久久久久日韩精品久久久男男| 国产日韩换脸av一区在线观看| 国产成人精品亚洲精品| 中国china体内裑精亚洲片| 日韩欧美国产中文字幕| 欧美性猛交xxxxx水多| 九九精品在线观看| 国产精品久久久久77777| 欧美香蕉大胸在线视频观看| 岛国av在线不卡| 97精品国产97久久久久久免费| 亚洲精品免费在线视频| 亚洲一区免费网站| 98精品在线视频| 美女国内精品自产拍在线播放| 最近免费中文字幕视频2019| 亚洲精品狠狠操| 成人午夜黄色影院| 欧美中文字幕在线| 欧美在线亚洲在线| 欧美网站在线观看| 欧美午夜视频一区二区| 国产精品视频久久久| 美女国内精品自产拍在线播放| 91久久国产精品| 日韩精品免费在线视频| 亚洲国产精品久久久久秋霞蜜臀| 中文字幕精品一区二区精品| 日韩欧美国产视频| 国产美女久久精品香蕉69| 久久久噜噜噜久久久| 精品久久久久久中文字幕大豆网| 国产精品av网站| 成人午夜一级二级三级| 亚洲免费人成在线视频观看| xxxx性欧美| 日韩高清av一区二区三区| 最新日韩中文字幕| 亚洲精品日韩激情在线电影| 午夜精品一区二区三区在线视频| 97久久精品在线| 久久伊人精品视频| 日本道色综合久久影院| 亚洲精品国产综合久久| 亚洲色图偷窥自拍| 国产不卡一区二区在线播放| 日韩av在线免费播放| 国产女人18毛片水18精品| 麻豆国产精品va在线观看不卡| 欧洲亚洲女同hd| 久久久国产在线视频| 亚洲第一二三四五区| 欧美成人一二三| 久久精品国产亚洲7777| 懂色av中文一区二区三区天美| 91欧美精品午夜性色福利在线| 精品国产拍在线观看| 国产经典一区二区| 国产精品美女免费看| 日韩精品视频在线免费观看| 91黑丝高跟在线| 精品国内产的精品视频在线观看| 欧美日韩视频在线| 中文字幕免费国产精品| 国产精品91久久久久久| 国产成人一区二| 自拍视频国产精品| 久久久久久久久久久久av| 97成人在线视频| 精品久久久91| 欧美日韩国产限制| 色偷偷噜噜噜亚洲男人的天堂| 国产成人精品免费视频| 欧美成人精品一区二区| 日韩大陆欧美高清视频区| 久久久综合av| 亚洲一区二区自拍| 欧美精品久久久久久久久| 一本色道久久88精品综合| 激情懂色av一区av二区av| 亚洲精品视频免费在线观看| 一区二区欧美日韩视频| 亚洲欧美国产制服动漫| 另类少妇人与禽zozz0性伦| 亚洲精品国产精品久久清纯直播| 欧美极品在线播放| 伊人伊成久久人综合网小说| 国产精品视频自在线| 日韩精品免费观看| 国产自产女人91一区在线观看| 欧美一级视频免费在线观看| 日韩欧美在线网址| 韩国三级日本三级少妇99| 中文字幕精品www乱入免费视频| 日本一区二三区好的精华液| 亚洲香蕉成人av网站在线观看| 欧美激情va永久在线播放| 亚洲国产精品久久| 精品高清美女精品国产区| 久久久久久欧美| 久久久久久久97| 日本三级久久久| 一区二区三区视频观看| 在线免费观看羞羞视频一区二区| 久久久久久午夜| 欧美激情啊啊啊| 成人网欧美在线视频| 国产+成+人+亚洲欧洲| 国产精品久久久久久久久久三级| 欧美最顶级丰满的aⅴ艳星| 欧美一区二区视频97| 成人一区二区电影| 日韩精品久久久久久久玫瑰园| 美日韩精品免费观看视频| 日韩福利伦理影院免费| 91久久精品在线| 日韩免费av在线| 欧美一区二区.| 国产精品99久久99久久久二8|