获取应用的 Bundle ID 方法:在 iTools 下,找到 app 名字命名的文件夹 xxx.app,找到 Info.plist,导出,Xcode 打开。 得到 Bundle ID 如: com.tencent.mipadqq iPad 版 QQ 4.1 com.tencent.xin 微信 5.3.1.17
重要数据如密码,会话 ID 等等绝不要存储在设备上。如果别无它法,那么应该存在 keychain 中。这是因为只要这个设备不越狱,攻击者不能从 keychain中找出这些数据。有人可能会说 把数据保存到keychain不像把数据保存到NSUserDefaults那么简单。不过我们能够使用第3方封装的代码使得这个过程变得极其简单。例如, 这一篇文章演示了如何使用PDKeychainBindings这个wrapper,展示了把数据保存到keychain中是多么的简单。
不过,请注意在越狱设备上,keychain中的信息并不安全。一个可取的方法就是在把字符串保存到 keychain 之前,先用你自己的加密方法加密一下。这样就有更高的安全性, 因为即使攻击者从 keychain 中拿到这个加密字符串,他也不得不解密这个加密后的字符串。
绝对不要把机密信息如密码,认证令牌等信息保存到 NSUserDefaults。这是因为所有保存到 NSUserDefaults 的信息都是以未经加密的格式保存在一个 plist 文件的,位于你的应用程序 bundle 的
Library -> Preferences -> $AppBundleId.plist
。任何人都能够使用工具如 iExplorer 来窥视你的应用程序的bundle,然后得到这个plist文件,即使你的设备未越狱。绝对不要把机密信息如密码等信息保存到Plist文件,因为即使在未越狱设备上要获取这些plist文件也非常容易。所有保存到plist文件的内容都是以未加密的格式保存的。
Cora Data文件同样是以未加密的数据库文件保存在应用程序bundle的。Core Data framework内部使用Sql 查询来保存数据,因此所有文件都是 .db 文件。非常容易就能把这些文件复制到电脑上, 然后用工具如 sqlite3 就能查看这些数据库文件中的所有内容。
via: iOS应用程序安全(25)-iOS开发安全编程实践