ios - 在 iOS 上的 SQLite 中存储数据的最佳和最安全的方式

标签 ios sqlite

这更像是一个设计问题。

我有一个应用程序,我正开始将其迁移到离线模式。我正在使用带有 GRDB 包装器的 SQLite。每次用户进行身份验证时,我都会下载一组用户配置文件数据,即用户 ID、添加日期、访问级别、配置文件图像 url、设置等。然后我将这些信息存储到本地 SQLite 表中,该表与 MYSQL 在线版本的结构相匹配.

我还在钥匙串(keychain)中存储了一个身份验证 token 和密码,并在身份验证后将它们用于与服务器(无用户 ID)的所有通信。

我的问题是,一旦用户注销,我是否应该删除 SQLite 中的现有表,从而清除所有以前的用户数据并为当前用户开始清理?

我担心的是,如果用户 1 在 friend 手机上登录了该应用程序,那么前一个用户的信息是否可用。如果不在注销时清除信息,新用户是否可以使用这些数据?显然不是通过应用程序本身,而是通过某种其他形式查看 SQLite 信息。

所有敏感信息,即密码等都存储在钥匙串(keychain)中。

我知道这可能是一个基于意见的问题,但这正是我要寻找的,只是关于您认为最有效的方法的一些意见。

谢谢

最佳答案

如果赠送或借出 iPhone 时安装了所有应用程序,新所有者很可能能够读取包含先前所有者信息的数据库。这就像借出装满电子邮件的 Mac。因此,如果用户注销时可能包含敏感信息(并且一旦用户可以写入文本或拍照,它就是潜在的敏感信息),那么您可能必须在用户注销时重置数据库。我已经编写了一个聊天应用程序来实现这一点。此外,感谢您使用 GRDB ;-)

关于ios - 在 iOS 上的 SQLite 中存储数据的最佳和最安全的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301013/

相关文章:

android - SQLiteOpenHelper onCreate()/onUpgrade() 何时运行?

android - SQlite 数据库在 Android 中以编程方式转换为 Excel 文件格式

python - RNCryptor 和 Python 服务器

ios - 如何使用 fetchAssests 按添加日期的顺序获取 PHAssets

ios - 最轻的 UI 元素

iphone - linkedin Oauth如何记住登录

在 C 中创建共享库,sqlite3 的问题

Android cursor.getColumnNames() 不包含新添加的列

sql - 在其他计算机上使用路径

ios - 如何从 UINavigationBar 子类设置 barTintColor