企业网站建设平台,十大广告投放平台,孝感网站开发的公司电话,什么网站做蜘蛛池1、ipa包加壳 首先#xff0c;我们可以通过iTunes 下载 AppStore的ipa文件(苹果 把开发者上传的ipa包 进行了加壳再放到AppStore中)#xff0c;所以我们从AppStore下载的ipa都是加壳的#xff0c;所以不能直接用来反编译。 得到ipa文件 可以分析APP 里包含的一些资源#x…1、ipa包加壳 首先我们可以通过iTunes 下载 AppStore的ipa文件(苹果 把开发者上传的ipa包 进行了加壳再放到AppStore中)所以我们从AppStore下载的ipa都是加壳的所以不能直接用来反编译。 得到ipa文件 可以分析APP 里包含的一些资源如图片、plist文件、静态wap页、.bundle 等。 所以不要 在plist文件、项目中的静态文件中 存储关键的信息如果要保存记得 对称加密这样可以增加破解的难度。 如果是越狱的手机从 手机上的PP助手下载的ipa包 都是 脱壳之后的可以直接用来反编译。 2、敏感信息存储位置 我们可以用软件 查看 APP的沙盒查看里面存储的 文件:sqlite、plistNSUserdefault会存到Library下的Preferences中 的 plist文件中、图片等NSUserdefault 中不要保存关键信息如果要保存还是加密吧。。sqlite也是这样子的。 iOS 8.3之前 不越狱的手机也可以 直接用MAC上的PP助手、iTool 来查看 任何APP的沙盒系统APP除外。iOS 8.3之后就不行了。 越狱手机都可以查看任意APP的沙盒包括系统APP的沙盒。还有iOS的系统目录等。 3、设备安全(越狱丢失) 越狱手机直接用PP助手下载的就是 脱壳的ipa所以不用再脱了。对AppStore下载的ipa包 可以用工具对加壳的ipa 进行脱壳再用IDA、Hopper 进行反编译进行分析 可以得到 近乎易懂的 伪代码。但是反编译后的代码 要 一个方法一个方法的去分析类似面向过程编程。。当然也有工具 去提取 项目中的所有.h文件。不过 反编译 终归是个 耐心的活急躁的人容易砸电脑。 4、APP反编译(逆向工程) 所有的APP都是可以反编译的所以 很关键的数据 最好通过接口获取。 那么接口如何保证安全呢。首先用HTTPS虽然HTTPS已经很安全了但是数据也是有可能被破解的这个后面会介绍。。所以 接口一定要自己加密。 非对称加密(RSA)现在 还是没有办法破解的但是因为 非对称加密的效率低所以很少有企业将所有的接口都用非对称加密。 接口如果用对称加密密钥 放到代码里 是能被反编译出来的。如果你的 APP的安全性很高就不要把密钥 写到代码里。 可以这样处理 先通过非对称加密的接口 获取密钥然后 再在 后面的 接口通信中 用这个密钥进行加密。这样做 就类似 HTTPS 的简化版实现了。安全性很高。目前应该 是不能破解的。 5、代码内容加密(对称加密/非对称加密) 根据APP的安全性也可以把 关键数据 写在代码里可以保存的是加密后的数据。比如我给一个变量赋值U2FsdGVkX1rNsgpLmOYTqoVhRRerZj9oobZAIPzjo你不知道 我这个字符串解密后是 123456我只是使用的时候才解密处理用。 这样也只是增加了黑客获取关键数据的难度。 6、安全密钥更新周期 密钥要定期更换。比如 3个月 或半年换一次如果密钥是从接口通过非对称加密 获取的直接修改服务端就可以了。 如果密钥是写在代码里的。就等APP升级新的版本的时候新版本的APP和其对应的接口版本 都 修改为新的密钥 就可以了。 旧的接口版本和APP版本还用以前的密钥等强制更新的时候才会失效。 如果一个APP 一个密钥用上几年都不变 是很危险的。离职的人员都可以直接用以前 的代码 来获取相关的数据。特别是 支付相关的有的服务端甚至没有 去校验支付的金额或其他数据导致 离职人员用1分钱 可以买到 任何价格的 线上产品服务端这种在线上环境留后门的安全性问题我是真的遇到有人这么搞。。 7、代码混淆 最好能 进行 代码混淆能增加反编译的难度当然只是增加了难度还是能破解的。但是 代码混淆 的 性价比是很高的就是你这边付出了 一点时间而黑客 就要多付出几十倍 的时间。。其实 接口 自己加密 的性价比也很高。 8、接口安全(双向加密) 接口返回的数据 最好也进行 加密。比如现在大家都连我的热点或者代理服务器我是有可能 直接 获取你的APP的 HTTPS 解密后的json数据如何获取相见《逆向工程》。当然如果你觉得 你的APP返回的json数据都是 不重要的也可以不对数据进行加密。 像微信、QQ、支付宝这种 安全性高的通信两边的数据 收发 都 应该 进行加密的。 9、通讯安全第三方库漏洞 像HTTPS本身 是否有漏洞这种我们就不去说了。就 去年iOS的AFNetworking 漏洞事件完全是 代码的问题。虽然不是HTTPS的安全机制的问题。但是 黑客还是能很容易拿到HTTPS解密后的数据。 去年iOS的AFNetworking曝SSL漏洞 就涉及2.5万个APP。 有的银行的APP只用了HTTPS通信都不加密就很容易拿到明文数据了。有的APP里的各种数据都 采用复杂的加密算法破解人员看到都烦去破解这个APP的时间还不如去搞其他的几个APP。 HTTPS 本身是安全的。但是数据还是可能被破解。所以 不要觉得 我只用HTTPS 就安全了。理论上 说任何 的 协议、代码都是可能有漏洞的只是有的现在 还没被发现或破解并不代表一直不能被破解。。 10、敏感信息安全加密 黑客不会 去一个手机一个手机的 把沙盒数据 拿出来 来看每个用户的数据(黑客也不可能拿到你的手机)。但是如果黑客捡到 你的手机 都不用登陆微信 就可以 通过微信APP的沙盒 拿到你和小三的偷情聊天记录、能拿到你的银行卡号你的手机号(很多APP都把手机号、银行卡号、聊天记录 明文保存在沙盒里)。。你是不是会觉得微信 怎么这么low。我们只是拿微信举个例子微信还不会这么low。 11、通讯网络安全 黑客最主要的还是通过网络来获取 他们想要的数据网络的安全级别是最高的。如果恰好 你的APP 加密密钥 明文 保存到了沙盒里 或者 你的 数据通信 还没有进行加密恭喜你你的数据和裸奔没啥区别。。 有人说“我就做了个聊天的APP没啥机密信息。再说 大家连的都是 公司的wifi、4G网络不会有问题的所以我的通信才不加密麻烦。” 举个搞笑的栗子 你现在在飞机场连着免费wifi正在和副总裁在微信里 谈着 价值100个亿的创意的时候聊天记录已经被 黑客 抓包获取 然后卖给竞争对手了。。只是举个例子微信的加密是相当安全的微信很多的通讯还是用的HTTP但是就算你拿到他们数据也是无法解密的。这里举例用微信只是为了方便大家理解。免费wifi确实有可能是黑客设的坑新闻上经常报道。 所以不要让自己的数据裸奔。。。 回到顶部 12、代码调试信息安全管理 代码方面 12.1、在release环境下 NSLog 不要打印日志 否则iOS系统日志里都可以查看到在.pch文件中加下面的几行代码就可以解决。很早大家都这么做了。 1 #ifdef DEBUG
2 #define NSLog(...) NSLog(__VA_ARGS__)
3 #define debugMethod() NSLog(%s, __func__)
4 #else
5 #define NSLog(...)
6 #define debugMethod()
7 #endif 现在很多APP的部分页面开始使用 Swift在Swift 文件中是允许用 NSLog 的语法来打印但是 不要这么做因为 这样 就会导致这段代码在 release环境 中也可以正常输出。通过 PP助手、iTools可以直接 查看 iOS的系统日志。也可以直接 通过Xcode-Window-Devices - 点最下面的向上的小箭头来看日志。 所以Swift中打印 还是用 print吧。 12.2、AFNetworking 的 allowInvalidCertificates 属性 要设置成 falsevalidatesDomainName属性 设置成true。否则 HTTPS通信就可以被解密。这块涉及到AFnetworking 去年的通信漏洞 就不详述了。 但是一般开发的 测试环境 的HTTPS 不是CA颁发的而是自签名证书访问的也不是域名而是IP。所以可以在测试环境 忽略证书和域名代码如下 1 #ifdef DEBUG
2 manager.securityPolicy.allowInvalidCertificates YES;
3 manager.securityPolicy.validatesDomainName NO;
4 #endif 答疑 像上文中提到的 接口模拟HTTPS 进行通信基本上是破解不了的。非对称加密毕竟还是 很安全的。 黑客也是有时间成本的有性价比的。文中多次 写到可以增加破解的难度不是这样做了 就一定 不会被破解。 有人会觉得 在 代码中 加密了 反正也 能被破解那还加啥密反正没啥卵用。比如 关键数据 加密 后 存到代码里 打个比方我装个防盗门 反正也防不住贼干脆...就别装门了反正也没啥卵用。 再比如有几个房间放着同样价值的东西账户数据、聊天数据等。但这几个房间有的是全封闭防炸弹的有的就只是一个木门有的甚至门都是开着的你会选择哪个。。 这就像为什么现在 iOS 系统的越狱速度越来越慢不是说越狱人员的水平变低了而是现在越狱的用户越来越少像盘古这种公司通过越狱获得的盈利也越来越少了自然投入的精力就会变少。 关键数据加密后存到代码里这样总比你直接把明文保存到代码中更难破解我们要做的是让黑客知道你要来惹我你就必须付出更多的时间和精力。