一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

iOS 開發(fā)筆記

 睜開眼就變帥 2016-10-13

一般來講如果app用了web service , 我們需要防止數(shù)據(jù)嗅探來保證數(shù)據(jù)安全.通常的做法是用ssl來連接以防止數(shù)據(jù)抓包和嗅探

其實這么做的話還是不夠的 。 我們還需要防止中間人攻擊(不明白的自己去百度)。攻擊者通過偽造的ssl證書使app連接到了偽裝的假冒的服務(wù)器上,這是個嚴(yán)重的問題!那么如何防止中間人攻擊呢?

首先web服務(wù)器必須提供一個ssl證書,需要一個 .crt 文件,然后設(shè)置app只能連接有效ssl證書的服務(wù)器。

在開始寫代碼前,先要把 .crt 文件轉(zhuǎn)成 .cer 文件,然后在加到xcode 里面

 .crt 文件轉(zhuǎn)成 .cer 文件

1.使用openssl 進行轉(zhuǎn)換

openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der

2.通過安裝crt文件,電腦導(dǎo)出

1)先打開“鑰匙串訪問”

2)選中你安裝的crt文件證書,選擇“文件”--》“導(dǎo)出項目”

 

3)選擇.cer證書,存儲即可。

AFNetworking 對數(shù)據(jù)進行https ssl加密

實際上,很簡單,只需要兩步。

第一步:新增一個類

復(fù)制代碼
+ (AFSecurityPolicy*)customSecurityPolicy
{
    // /先導(dǎo)入證書
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"hgcang" ofType:@"cer"];//證書的路徑
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
    
    // AFSSLPinningModeCertificate 使用證書驗證模式
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    
    // allowInvalidCertificates 是否允許無效證書(也就是自建的證書),默認為NO
    // 如果是需要驗證自建證書,需要設(shè)置為YES
    securityPolicy.allowInvalidCertificates = YES;
    
    //validatesDomainName 是否需要驗證域名,默認為YES;
    //假如證書的域名與你請求的域名不一致,需把該項設(shè)置為NO;如設(shè)成NO的話,即服務(wù)器使用其他可信任機構(gòu)頒發(fā)的證書,也可以建立連接,這個非常危險,建議打開。
    //置為NO,主要用于這種情況:客戶端請求的是子域名,而證書上的是另外一個域名。因為SSL證書上的域名是獨立的,假如證書上注冊的域名是www.google.com,那么mail.google.com是無法驗證通過的;當(dāng)然,有錢可以注冊通配符的域名*.google.com,但這個還是比較貴的。
    //如置為NO,建議自己添加對應(yīng)域名的校驗邏輯。
    securityPolicy.validatesDomainName = NO;
    
    securityPolicy.pinnedCertificates = @[certData];
    
    return securityPolicy;
}
復(fù)制代碼

第二步:直接在請求方法里加入,只有一行代碼

復(fù)制代碼
+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
    // 1.獲得請求管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
    // 2.申明返回的結(jié)果是text/html類型
    mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
    
    // 加上這行代碼,https ssl 驗證。
    //[mgr setSecurityPolicy:[self customSecurityPolicy]];
    
    // 3.發(fā)送POST請求
    [mgr POST:url parameters:params
      success:^(AFHTTPRequestOperation *operation, id responseObj) {
          if (success) {
              success(responseObj);
          }
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          if (failure) {
              failure(error);
          }
      }];
}
復(fù)制代碼

接下來,我們通過Charles抓取數(shù)據(jù),抓到的數(shù)據(jù)已經(jīng)加密。

可能遇到的問題

1)證書一定要拉到項目里面,AFN加了驗證之后,看看獲取證書的certData是否為空。如果為空,則證書有問題

NSData *certData = [NSData dataWithContentsOfFile:cerPath];

2.如果https服務(wù)器沒有數(shù)據(jù)返回,很大可能是因為服務(wù)器配置出了問題。

 

附Demo: http://download.csdn.net/detail/jys1216/9412638

注:由于cer證書是真實的項目在用,不便提供,因些Demo里的cer證書和請求鏈接都是有誤的。請?zhí)鎿Q使用。

demo里的cer文件,我是在AFN里找的,certData是有數(shù)據(jù)的。

 

參考文章

iOS安全系列之一:HTTPS  :http:///2014/10/21/Security-1-HTTPS/ 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    一区二区在线激情视频| 亚洲一区二区三区中文久久| 天堂av一区一区一区| 亚洲视频偷拍福利来袭| 亚洲最新中文字幕在线视频| 精品丝袜一区二区三区性色| 九九热视频免费在线视频| 欧美日韩国产欧美日韩| 国产毛片对白精品看片| 欧美国产极品一区二区| 亚洲乱码av中文一区二区三区| 男人和女人草逼免费视频| 日韩精品免费一区三区| 精品国产亚洲av成人一区| 风间中文字幕亚洲一区| 亚洲国产精品国自产拍社区| 在线免费看国产精品黄片| 亚洲一区二区福利在线| 欧美三级不卡在线观线看| 国产精品免费自拍视频| 有坂深雪中文字幕亚洲中文| 亚洲精品国产福利在线| 亚洲成人免费天堂诱惑| 国产在线视频好看不卡| 91久久精品中文内射| 欧美日韩少妇精品专区性色| 91欧美日韩精品在线| 日韩欧美二区中文字幕| 欧美日韩国产亚洲三级理论片| 欧美一区二区三区99| 亚洲另类女同一二三区| 东京热一二三区在线免| 99秋霞在线观看视频| 国产欧美日韩综合精品二区| 免费在线播放一区二区| 久久精品久久精品中文字幕| 国产亚洲欧美日韩精品一区| 好吊日成人免费视频公开| 亚洲中文字幕在线观看黑人| 69老司机精品视频在线观看| 午夜福利视频六七十路熟女|