源码分析之AFNetworking③AFSecurityPolicy和AFURLRequestSerialization

一、首先看一下AFSecurityPolicy的属性:
1、https验证模式,默认无,还有证书匹配和公钥匹配
@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode;
typedef NS_ENUM(NSUInteger, AFSSLPinningMode) {
AFSSLPinningModeNone,
AFSSLPinningModePublicKey,
AFSSLPinningModeCertificate,
};
可以匹配证书验证的证书,当我们不主动设置SSLPinningMode的时候该字段是空;
如果主动设置,会调用默认读取certificatesInBundle.cer的证书进行赋值。
2、
@property (nonatomic, strong, nullable) NSSet <NSData *> pinnedCertificates;
//3、是否允许无效证书(即自建证书),默认NO,如果需要验证自建证书设置为YES
@property (nonatomic, assign) BOOL allowInvalidCertificates;
//4、是否需要验证域名;如设置成NO的话,即服务器使用其他可信任机构颁发的证书,也可以连接,这危险,建议打开
@property (nonatomic, assign) BOOL validatesDomainName;
//置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名
.google.com,但这个还是比较贵的。//如置为NO,建议自己添加对应域名的校验逻辑

核心代码

- (void)URLSession:(NSURLSession *)session
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
 completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{//挑战处理类型为 默认
    /*
     NSURLSessionAuthChallengePerformDefaultHandling:默认方式处理
     NSURLSessionAuthChallengeUseCredential:使用指定的证书
     NSURLSessionAuthChallengeCancelAuthenticationChallenge:取消挑战     */
    NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling;    // 服务器挑战的证书
    __block NSURLCredential *credential = nil;// 这个Block是提供给用户自定义证书挑战方式的,比如是否需要自定义
    if (self.sessionDidReceiveAuthenticationChallenge) {
        disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential);
    } else {    // NSURLAuthenticationMethodServerTrust 单向认证关系 也就是说服务器端需要客户端返回一个根据认证挑战的保护空间提供的信任产生的挑战证书
        if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {        // 基于客户端的安全策略来决定是否信任该服务器,不信任的话,也就没必要响应挑战
            if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) {             // 创建挑战证书(注:挑战方式为UseCredential和PerformDefaultHandling都需要新建挑战证书)
                credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];                if (credential) {
                    disposition = NSURLSessionAuthChallengeUseCredential;
                } else {
                    disposition = NSURLSessionAuthChallengePerformDefaultHandling;
                }
            } else {
                disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;
            }
        } else {
            disposition = NSURLSessionAuthChallengePerformDefaultHandling;
        }
    }// 完成挑战
    if (completionHandler) {
        completionHandler(disposition, credential);
    }
}

二、AFURLRequestSerialization
AFURLRequestSerialization涉及两个模块:AFURLRequestSerialization和AFURLResponseSerialization
前者主要是修改请求头部,提供了接口设置HTTP头部字段,后者是处理响应的模块,将请求放回的数据解析成相对应的格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 物联网僵尸(Mirai)源码分析和沙箱运行演示是针对Mirai僵尸网络进行深入研究和模拟实验的过程。 首先,Mirai是一种恶意软件,被用于控制僵尸网络,通过感染硬件设备(如路由器、监控摄像头等)并控制其行为。源码分析是指对Mirai的代码进行分析,以了解其工作机制、攻击方式和传播途径。分析Mirai源码可以揭示该僵尸网络的内部结构和功能,包括攻击指令的发送和执行、感染设备的方法以及与C&C服务器的通信方式等。 然后,在模拟实验中,可以使用沙箱技术对Mirai进行安全隔离运行。沙箱是一种软件隔离环境,在其中运行恶意软件等风险较大的应用程序,以避免对真实系统的危害。通过将Mirai放入沙箱中进行运行,可以实验性地观察其行为和攻击特征,同时防止其对真实设备和网络的影响。 在沙箱中运行Mirai源码,可以通过模拟感染设备、执行攻击指令等方式,观察其与C&C服务器的通信、攻击其他网络设备的能力以及传播的效果。通过分析Mirai在沙箱中的行为,可以帮助安全研究人员了解并研究其工作原理,同时也可以得出应对Mirai及类似僵尸网络的防御措施。 总而言之,物联网僵尸(Mirai)源码分析和沙箱运行演示是为了深入了解该僵尸网络的工作原理、攻击方式和防御策略。通过对Mirai的源码进行分析和在沙箱中运行,可以揭示其内部机制,并为开展相关研究提供基础和准备。 ### 回答2: 物联网僵尸Mirai源码分析和沙箱运行演示是一种研究Mirai恶意软件的方法,它能够帮助安全研究人员了解该恶意软件的工作原理、攻击方式以及如何进行防范。 Mirai是一种物联网僵尸网络,它利用弱密码和漏洞攻击物联网设备,将这些设备转变为僵尸,并将其组成一个庞大的僵尸网络。这些僵尸设备可以用来发动DDoS攻击、传播恶意软件等。Mirai源码是该恶意软件的实际代码,通过分析源码,可以揭示其攻击方法和漏洞利用路径。 沙箱是一种隔离环境,用于模拟和执行恶意软件,以观察其行为、分析其功能并检测其恶意行为。在Mirai源码分析和沙箱运行演示中,安全研究人员将Mirai源码加载到沙箱中,然后观察和记录恶意软件的行为。 通过Mirai源码分析,我们可以深入了解Mirai的攻击方式和技术细节。比如,Mirai利用常见的弱密码列表攻击物联网设备的Telnet服务,然后获取控制权并将设备添加到僵尸网络中。此外,Mirai还利用漏洞攻击物联网设备,如利用未经授权访问漏洞进行传播。 沙箱运行演示可以帮助研究人员观察Mirai的行为模式,并探索其可能的漏洞利用和攻击能力。通过沙箱运行,我们可以模拟Mirai在真实环境中的运行,并对其进行分析和评估。 总而言之,Mirai源码分析和沙箱运行演示是一种重要的研究方法,可以帮助我们深入理解Mirai和类似恶意软件的工作原理,从而更好地保护物联网设备的安全。 ### 回答3: 物联网僵尸Mirai源码分析和沙箱运行演示是一个对Mirai僵尸网络进行研究和分析的过程。Mirai是一种恶意软件,它通过利用物联网设备的弱点进行入侵,从而建立一个由僵尸设备组成的网络,用于发起分布式拒绝服务(DDoS)攻击。 在进行源码分析之前,需要先获取Mirai源码。通过对源码的研究和分析,可以深入了解Mirai的运行原理和攻击方式。 源码分析的关键步骤包括但不限于以下几点: 1. 分析Mirai的代码结构和组织方式,了解各个组件的功能和相互关系。 2. 研究Mirai的攻击模块,了解它是如何利用物联网设备进行攻击的。 3. 深入理解Mirai的传播机制,追踪它是如何在设备之间传播和建立僵尸网络的。 4. 分析Mirai的通信协议,包括和命令控制服务器的通信方式和数据传输规则。 源码分析完成后,可以进行沙箱运行演示,这是为了更好地了解Mirai的行为和影响。沙箱是一个安全环境,用于模拟网络和设备环境,并观察Mirai在其中的行为。 在沙箱运行演示中,可以进行以下操作: 1. 在沙箱环境中搭建模拟的物联网网络,包括不同类型的设备和操作系统。 2. 将Mirai恶意软件部署到选定的设备上,并观察它是如何感染其他设备并建立僵尸网络的。 3. 通过监测和分析Mirai的网络流量,了解其攻击行为和目标。 4. 模拟Mirai发起DDoS攻击,观察其对网络和设备的影响。 通过源码分析和沙箱运行演示,可以帮助安全专家和研究人员更好地了解Mirai的运作方式,从而提出相应的防御和对策措施,保护物联网设备和网络的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值