gpt4 book ai didi

ios - NSURLConnection willSendRequestForAuthenticationChallenge 安全吗

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:08:14 24 4
gpt4 key购买 nike

我在我的 iOS 应用程序中使用 HTTPS POST 连接到公司内部 REST 服务。此服务需要基本的 HTTP 身份验证。

当我尝试在 HTTPHeader 中传递身份验证参数时,服务器返回错误消息 "Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid.您可能正在连接到一个伪装成“oiam.XXXX.com”的服务器,这可能会使您的 secret 信息处于危险之中。"UserInfo=0x8d1de60 {NSErrorFailingURLStringKey= https://oiam.xxxx.com/NSLocalizedRecoverySuggestion=Would您是否仍然希望连接到该服务器?,"

我阅读了一些问题,看起来我需要安装证书。因为我在 iOS 模拟器上,所以我无法安装证书。

我尝试使用 NSURLConnectionDelegate 协议(protocol)并且连接有效

我遇到的唯一问题是我传递用户名密码的方法。安全吗?为什么我不需要对值进行编码?在 header 中进行 HTTPS 基本身份验证时,我正在编码以传递值。

-(void)connection:(NSURLConnection *)connection       willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge previousFailureCount]) {
[[challenge sender] cancelAuthenticationChallenge:challenge];
} else {
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username1"
password:@"password1"
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
}

最佳答案

对于内部使用和测试,您可以使用类扩展覆盖 NSURLRequest 中的私有(private) API,以便接受无效证书:

#if DEBUG

@interface NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host;

@end

@implementation NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
// ignore certificate errors only for this domain
if ([host hasSuffix:@"oiam.XXXX.com"]) {
return YES;
}
else {
return NO;
}
}

@end

#endif

至于凭证的安全性问题,它们将在通过网络传输之前根据需要进行编码。

关于ios - NSURLConnection willSendRequestForAuthenticationChallenge 安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com