判断设备的网络环境是否设置HTTP代理,用于防止抓包

2017-06-15 15:52小小哆Objective-C相关,iOSDev评论(1)

著名的Mac抓包工具——“Charles”,用于调试网络请求是一个很好的利器。
但抓包也会被某些Hacker或别有用心的人用来抓取应用请求的接口,对请求参数进行篡改等,比如之前就爆出有人利用某App的Bug,对支付的金额进行修改,充值100话费,实际支出1分钱。

+ (BOOL)checkProxy {
    NSDictionary *proxySettings = (__bridge NSDictionary *)(CFNetworkCopySystemProxySettings());
    NSArray *proxies = (__bridge NSArray *)(CFNetworkCopyProxiesForURL((__bridge CFURLRef _Nonnull)([NSURL URLWithString:@"http://www.baidu.com"]), (__bridge CFDictionaryRef _Nonnull)(proxySettings)));
    NSLog(@"%@",proxies);
    
    NSDictionary *settings = proxies[0];
    
    if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"]) {
        NSLog(@"没代理");
        return NO;
    } else {
        NSLog(@"设置了代理");
        return YES;
    }
}

通过上面代码,用CFNetwork模拟访问百度网站,拿到proxySettings,通过kCFProxyTypeNone判断是否设置代理。建议在网络请求前进行判断,设置代理的话直接走网络错误,可有效的防止抓包

当然,也不一定需要设置HTTP代理才可以抓包拿到数据。所以,设置参数签名、接口请求内容加密、使用HTTPS证书,都是有效防止参数被修改的方法(最重要是有个牛逼的后端Orz)

上一篇 用Xcode下载文件使用工具下载的办法没有了 下一篇
评论 1

最新评论

    1. Tokin

      在V2上看到你的头像就很眼熟,没想到真的是 啃玉米。。。我是当年的“天空团”虽然不知道你有没有印象,但是看到同样是12年搭建的博客的博友还在坚持写博客,有种很亲切的感觉。哈哈

      Tokin 2017-06-26 17:07 回复
由于之前使用多说插件出现问题,导致以前的评论丢失,在此深表歉意!

站点统计

  • 建站日期:2014-12-06
  • 最后更新:2017-06-15
  • 运行时间:1025 天
  • 文章数量:46 篇