首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NSURLRequest的私有"setAllowsAnyHTTPSCertificate:forHost:“的替代方法?

NSURLRequest的私有"setAllowsAnyHTTPSCertificate:forHost:“的替代方法?
EN

Stack Overflow用户
提问于 2010-01-05 03:25:14
回答 5查看 18.1K关注 0票数 17

我的iPhone应用程序被拒绝的唯一原因是使用了NSURLRequest的私有方法+setAllowsAnyHTTPSCertificate:forHost: (看起来非常安全)。有没有一个非私有的API来模拟这个功能?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-27 16:23:25

票数 7
EN

Stack Overflow用户

发布于 2011-09-15 05:07:17

实际上,我正在使用10.6.8进行测试,这段代码仍然有效--它使用的是私有API,但会检查选择器是否存在(myurl是我试图加载到WebView或NSURLConnection中的NSURL ):

SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
    IMP fp;

    fp = [NSURLRequest methodForSelector:selx];

    (fp)([NSURLRequest class], selx, YES, [myurl host]);
}

请注意,没有使用"@selector“,因此所有工作都将在运行时完成。这使得它尽可能地安全和隐藏,不会被苹果公司检查到,特别是如果你模糊了字符串。

票数 6
EN

Stack Overflow用户

发布于 2010-01-05 05:10:10

一个非常愚蠢的变通方法是创建你自己的类别方法:

@implementation NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES;
}

@end

这应该可以通过苹果的私有应用程序接口检查,但它仍然是一样的(使用一个私有的,没有文档记录的API1,随时都可能被破解)。实际上,它更糟糕,因为它允许所有东西,而不仅仅是那个主机。

1:私有API,应该公有,但仍然是私有API。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2001565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档