内容简介
第一部分 iOS基础
第1章 iOS安全模型
安全启动
沙盒机制
数据保护和全盘加密
加密密钥的层级
钥匙串API
数据保护API
防御代码漏洞:ASLR、XN和其他机制
越狱检测
苹果商店的审查是否有用
WebKit桥接
动态修复
故意植入不安全的代码
内嵌解释器
小结
第2章 Objective-C简明教程
关键的iOS编程技术
消息传递
剖析Objective-C程序
声明一个接口
具体实现
使用block指定回调
Obj ective-C如何管理内存
自动引用计数
委托和协议
should消息
will消息
did消息
声明并遵守协议
category的潜在问题
方法swizzling
小结
第3章 iOS应用剖析
对plist文件进行处理
设备目录
Bundle目录
Data目录
Documents和Inbox目录
Library目录
tmp目录
Shared目录
小结
第二部分 安全性测试
第4章 构建测试平台
拆掉辅助轮
推荐几个测试设备
使用设备测试与使用模拟器测试
网络和代理设置
绕过TLS验证
用stunnel绕过SSL
设备上的证书管理
在设备上设置代理
Xcode和构建设置
为生活增加点挑战
启用完整的ASLR
Clang和静态分析
Address Sanitizer和动态分析
使用Instruments监控程序
激活工具
用Watchdog监视系统活动
小结
第5章 使用lldb和其他工具进行调试
lldb中有用的特性
操作断点
查看帧和变量
可视化查看对象
操作变量和属性
断点行为
使用lldb进行安全分析
错误注入
追踪数据
查看核心框架
小结
第6章 黑盒测试
安装第三方应用程序
使用.app目录安装
使用.ipa程序包安装
解密二进制文件
启动设备上的debugserver
定位加密字段
转储应用程序内存
逆向解密后的二进制文件
使用otool检查二进制文件
使用class-dump获得类信息
使用Cycript从运行程序中提取数据
使用Hopper反汇编
绕过证书锁定
使用Cydia Substrate工具
使用Introspy自动拦截
小结
第三部分 Cocoa API的安全怪癖
第7章 iOS网络通信
使用iOS自带的URL加载系统
正确使用传输层安全协议
NSURLConnection的基本身份验证策略
在NSURLConnection中实现TLS认证
修改重定向行为
TLS证书锁定
使用NSURLSession
NSURLSession配置
执行NSURLSession任务
如何绕过NSURLSession的TLS验证
NSURLSession中的基本身份验证
管理己存储的URL凭证
使用第三方网络API的风险
如何正确使用AFNetworking
ASIHTTPRequest的错误使用方式
多点连接
使用NS Stream操作底层网络
使用CFStream操作更加底层的网络
小结
第8章 进程间通信
URL scheme和openURL方法
定义URL scheme
发送和接收URL/IPC请求
验证URL和发送者
劫持URL scheme
通用链接
使用UIActivity共享数据
应用程序扩展
检查应用程序是否实现了扩展
限制和验证可共享的数据
禁止应用和扩展交互
失败的IPC技巧:剪贴板
小结
第9章 适用于iOS的 Web应用
使用(并滥用)UIWebView
UIWebView的使用方式
在UIWebView中执行JavaScript代码
桥接JavaScript-Cocoa的收益和风险
应用与JavaScriptCore交互
使用Cordova执行JavaScript代码
使用WKWebView
WKWebView的使用方式
WKWebViews的安全性优势
小结
第10章 数据泄漏
揭秘NSLog和苹果系统日志
在发布版本中禁用NSLog
使用断点行为来记录日志
敏感数据如何通过剪贴板泄漏
不受限制的系统剪贴板
命名剪贴板的风险
剪贴板数据保护策略
查找并修复HTTP缓存泄漏
缓存管理
如何删除缓存数据
HTTP本地存储和数据库中的数据泄漏
按键记录及自动纠错数据库
用户偏好设置的错误用法
处理截屏中的敏感数据
屏幕遮挡策略
遮挡原理解析
隐藏视图的常见问题
阻止应用挂起,从而避免截屏
状态保存导致的泄漏
安全的状态保存
远离iCloud
小结
第11章 C语言的遗留问题
格式化字符串
预防传统的C格式化字符串攻击
预防Objective-C格式化字符串攻击
缓冲区溢出及栈空间
strcpy缓冲区溢出
预防缓冲区溢出
整数溢出和堆
malloc引发的整数溢出
预防整数溢出
小结
第12章 注入攻击
客户端的跨站脚本攻击
输入审查
输出编码
SQL注入攻击
断言注入攻击
XML注入攻击
通过XML外部实体实现注入攻击
第三方XML库的问题
小结
第四部分 保证数据安全
第13章 加密与认证
使用钥匙串
用户备份中的钥匙串
钥匙串保护属性
钥匙串基础用法
封装钥匙串
共享钥匙串
iCloud同步
数据保护API
保护等级
DataProtectionClass权限
检查保护数据是否可用
使用CommonCrypto加密
避免弱算法
正确使用初始化向量
破碎的熵
弱密钥
执行散列操作
使用HMAC确保消息的可靠性
使用RNCryptor封装CommonCrypto
使用TouchID进行本地验证
指纹是否足够安全
小结
第14章 移动端隐私问题
唯一设备标识符隐患
官方解决方案
使用唯一标识符的规则
移动端Safari及请勿追踪header标签
Cookie接受策略
位置和行动监控
地理位置定位的工作原理
存储位置数据的风险
限制定位精度
请求位置数据
健康与运动信息管理
通过HealthKit读写数据
M7协处理器
申请收集数据
使用iBeacon追踪距离
iBeacon监测功能
将iOS设备变为iBeacon
iBeacon注意事项
建立隐私策略
小结