我构建了我的第一个iOS应用程序,我需要使用该应用程序存储用户的用户注册详细信息。详细信息包括他的手机号码和我用来与后端联系的唯一ID(uuid)。如果我能得到关于存储此用户详细信息的位置的建议,那就太棒了。
我应该将它存储在NSUserDefaults中,还是应该使用Keychains来存储这些数据,甚至可能是在数据库中使用用户模型(在任何情况下我都需要一个数据库来存储一些其他细节)。只是为了补充一下,我还想进行一些验证,比如移动电话号码是否格式正确等等,然后我才真正保存它。任何人都可以在这里建议不同存储机制的安全方面吗?
对此的任何帮助将不胜感激。
答案 0 :(得分:2)
最安全的方法是使用keychain
服务,因为数据已加密,但在您的方案中,它似乎有点过时了。我建议您只使用NSUserDefaults
或sqlite database
我真的不建议将其存储在plist
中,因为这可以非常轻松地访问。
但这一切都取决于您获得的数据,如果它只是uuid
而手机号码那么NSUserDefaults
可能会做,而如果您获得用户名和密码以及其他个人数据,我会查看keychain
和sqlite database
的混合。
此外,您可以使用coredata文件来存储用户数据,但对于这样的小数据来说似乎有点过度杀戮。
请注意,您实际上不允许以编程方式获取iPhone手机号码,这会使用私有API ,Apple会拒绝您的应用使用。
2.5使用非公共API的应用将被拒绝
所以你不得不问他的用户。
答案 1 :(得分:0)
数据库选择完全取决于体系结构和安全性,如果您只需要存储一些信息,如登录详细信息和某些字段,那么Keychain用于登录详细信息和plist for data是最佳选择,但如果您的应用程序也使用服务并获取并保存大量数据并不断更新它,然后需要一个严肃的数据库结构。在那种情况下,核心数据和sqlite都是不错的选择取决于你的偏好
答案 2 :(得分:0)
您可以按照以下方式保存详细信息。
您可以根据自己的要求和数据使用其中任何一种。 干杯:)
答案 3 :(得分:0)
如果您在UserDefaults上存储信息,越狱设备可以看到您存储的信息,毕竟它是一个plist。如果您要在设备上保留敏感数据,则用户默认设置本身不是一个好选择。可能的替代方案:
使用钥匙串:钥匙串是一种保留用户名和工具名的工具。密码安全地存储在设备上;所以你可能需要找到一种方法将你提到的所有信息(一个dict,我推测?)转换成NSData并放入/获取钥匙串,但是已经在其他线程上进行了解释。此外,请注意,删除应用后,钥匙串数据会在设备上保留。
UserDefaults&加密:如果您可以自己加密数据,那么使用UserDefaults可能是更好的选择。它比钥匙串更直接,如果你从设备中删除应用程序(这可能是你想要的东西,或者不是。取决于它),它将被删除。