iOS应用安全-专栏总目录(持续更新) 丨蓄力计划
文章目录
引言
-
- 代码混淆技术
-
- 对敏感逻辑的安全防护方案设计
-
- 接口安全性保障措施——网络通信加密技术
-
3.1 参数签名验证机制
-
3.2 优化网络通信请求的安全性
-
3.3 实现HTTP/HTTPS协议下的请求拦截与处理
-
3.4 制定接口安全防护清单:接口安全防护清单
-
see also
引言
欢迎大家来到#公众号:iOS逆向的《iOS应用安全》专栏
本文提供了一个清晰的学习框架,并且同时也是本专栏的重要参考指南。
文中的超链接内容经过精心筛选与整理
点击后会跳转至相关页面内容
- 本专栏的整体大纲模块
- 网络加密传输及安全优化措施:包括报文签名机制、SSL证书验证流程;避免全局代理方案;不再验证 SSL 证书;主动拦截可疑请求;实施 DoH 和 DoT 技术;采用 SDL 技术保障数据完整性;
- 实施动态保护策略;
- 运用代码混淆技术提升防护效果;
- 对敏感逻辑实施专门防护措施,并对敏感信息进行脱敏处理;制定全面的安全接口防护设计;
I 代码混淆
代码混淆
代码混淆
代码混淆
II 敏感逻辑的保护方案
敏感信息的脱敏规范
注
敏感信息的脱敏处理规范
把函数名隐藏在结构体里,以函数指针成员的形式存储
III 接口安全(网络加密传输)
3.1 参数签名
案例:条码支付综合前置平台申请退款
案例:条码支付综合前置平台申请退款
案例:条码支付综合前置平台申请退款

3.2 网络请求安全优化
iOS网络请求安全优化措施包括以下几点:首先通过SSL 证书验证机制,在保障网络安全的同时阻止 Charles 捕获你的 request 数据;其次对各个 request 参数赋予独特的数字标识;再次采用避免使用全局 proxy 方案的具体策略;另外不再要求对 SSL 证书进行严格验证;最后针对 sensitive information 实施精确拦截;此外还需要考虑DoH & DoT两种方式以确保全面的安全防护。
在iOS开发中使用Networking时,敏感的数据若启用ephemeralSessionConfiguration配置,相较于常规设置,该方法的优势在于其不会将缓存项和 cookie 存储在本地设备中,而仅会在内存中临时加载.因此,在程序退出后,所有相关数据将随之消失.
SSL证书验证, 让Charles再也无法抓你的请求数据
可跳过对SSL证书的验证流程,并采取措施以规避因SSL证书过期引发的请求报错问题
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
securityPolicy.validatesDomainName = NO;
securityPolicy.allowInvalidCertificates = YES;
manager.securityPolicy = securityPolicy;
3.3 intercept the HTTP/HTTPS requests
intercept the HTTP/HTTPS requests
intercept the HTTP/HTTPS requests
捕获HTTP/HTTPS请求
————————————————
版权声明部分:此篇文章为博主「#公众号:iOS逆向」的原创作品,请广大读者转载时务必要增添原文出处链接及本声明。此篇文章遵照CC 4.0 BY-SA版权协议发布,请转载时请确保遵守相关规定。
原文链接:<>
3.4 接口安全设计的Checklist
- 调用方来源IP控制
比如可通过防火墙、主机host deny、Nginx deny等技术措施进行实施
- 调用方身份认证
比如key、secret、证书等技术措施进行实施
- 调用参数认证
应构建一个参数容错机制以防止出现参数在遍历敏感数据时导致数据安全问题
- 采用数字签名保障接口身份来源可信,数据防篡改
在使用NSURLSession时敏感的数据采用ephemeralSessionConfiguration配置,与默认配置相比,这个配置不会将缓存、cookie等存在本地,只会存储在内存里,所以当程序退出时,所有的数据都会消失。
调用方权限控制设置
调用频率、有效期进行控制
采用实时监控的方式进行调用行为观察,并且能够阻止异常事件的处理
幂等性校验,保持数据一致性
通过应用接入安全网关完成对APPID/KEY的身份认证功能,并对数据传输过程中的加密进行严格处理;同时对摘要信息进行数字签名验证以确保其完整性与真实性
see also
private iOS ECC椭圆曲线、ECDSA签名验签和ECIES加解密
