我用了我的iPhone應用程序的HTTPS用我自己的API調用來通信。隱藏的iOS HTTPS從小提琴手
我注意到,當我嘗試做數據包嗅探上的HTTPS它不會顯示任何關鍵信息。但是當我嘗試Fiddler2並在我的iPhone(由Fiddler2發佈)上安裝了受信任的證書時,我已經能夠看到我所有的HTTPS調用了!這可能導致嚴重的安全問題。
我與其他應用程序嘗試這樣做,因爲如果他們以某種方式保護自己有些人不會出現,即使在提琴手的東西!
怎麼能保護我的應用程序?
感謝
---額外的信息,所選擇的解決方案----
如果你正在使用AFNetworking,從1.1版本開始,你可以做以下解決問題:
以下內容添加到您的項目,Prefix.pch
#define _AFNETWORKING_PIN_SSL_CERTIFICATES_ =1
確保你已經添加的安全框架,然後將它導入在AFURLConnectionOperation.m文件
#import <CommonCrypto/CommonDigest.h>
添加這個額外的功能將文件
-(NSString*) sha256:(NSString*)input
{
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];
uint8_t digest[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
替換該行
if ([[[self class] pinnedCertificates] containsObject:certificateData])
與此一
if ([[self sha256:[certificateData description]] isEqualToString:SSL_CERTIFICATE_SHA256])
確保你已經計算的服務器證書的SHA256和前綴文件
#define SSL_CERTIFICATE_SHA256 @"<certificate SHA256 value>"
進行定義的價值!
你如何讓你的設備使用提琴手代理?你有沒有在系統設置中配置它? – occulus 2013-03-07 18:26:53
我在我的電腦上運行了Fiddler,並將手機上的代理設置爲指向我的電腦,然後我通過電子郵件將由Fiddler提供的證書發送到我的iPhone並安裝它。 – Kassem 2013-03-08 14:01:11
2 upvotes這樣一個深思熟慮的問題.. – 2014-01-02 06:28:10