接口安全：

1．对网络通信数据加密，请求被截获就看不到真实数据了。加密方案可以使用RSA、AES等，或者使用多种加密方案混合加密。此外，对于无需解密的数据(比如用户的账号密码)可以使用md5等不可逆算法加密
2．对数据签名，如果请求被截获并修改了数据，服务器发现解密后数据与原数据不匹配，知道这是一份被修改过的数据，拒绝处理。
3．使用https请求？？

注：接口安全要和后端工程师配合，基本上ios和android都差不多

App本地数据存储安全：

1. 保存用户数据：
 	ios保存相对应较小文件时通常使用plist文件，plist在ios中主要用于存储用户设置及App的配置信息，而保存在Plist文件中的二进制格式文件数据则可以使用Plist文件编辑器（如plutil）进行查看或修改，即使在一个没有越狱的设备上，plist文件也可以通过工具iExplorer获取。对于以编码、未加密或弱加密形式存储的敏感信息就可能会导致敏感信息泄露了。

	解决方法：
	1.使用keychina存储用户数据，keychina具有以下特点
	     (1)数据并不是放在App的Sanbox，即使删除了App，资料依然保存在keychain中，如果重新安装了App，还可以从keychain中获取数据
	⁃	(2)keychain的数据可以用group的方式，让程序可以在App间共享，不过需要相同的TeamD
	⁃	(3)keychain的数据是经过加密的
	⁃	
	⁃	       2.采用iOS提供的加密接口（如CommonCrypto）进行安全加密,然后再保存
	⁃	
	⁃	2.针对sqlite数据库的数据：
	⁃	sqlite是一种自包含，可嵌入，0配置的sql数据库引擎的跨平台c库文件，常见的后缀一般有”.sqlitedb”和”.db”，app一般会将其保存在沙盒文件/documents/目录下，sqlite的稳定，轻便，小巧已经成为ios缓存盒存储数据的主要方式。
	⁃	但是，sqlite也有一些风险，比如自带的sqlite数据库没有内置加密算法，如果app的沙盒缓存文件被别人访问，那么这些数据容易泄密，如果数据不加密将造成严重后果。删除sqlite的数据，知识吧这条数据标记为已删除，等待新的数据覆盖，如果sqlite数据被恢复，也将造成严重后果
	⁃	
	⁃	解决方法：
	⁃	（1）讲敏感数据进行加密再保存在数据库中，比如aes，des加密
	⁃	（2）使用封装的sqlite库，比如fmdb下的FMDB/SQClipher
	⁃	  (3)  对于删除敏感的数据，可以用假数据覆盖，这样别人就不会查找到被标记删除的数据