【问题标题】:Best and most secure way to store data in SQLite on iOS在 iOS 上的 SQLite 中存储数据的最佳和最安全的方法
【发布时间】:2015-12-17 19:05:17
【问题描述】:

这更像是一个设计问题。

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

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

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

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

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

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

谢谢

【问题讨论】:

  • 除了我在下面的回答之外,我还有其他问题要问:为什么要让用户首先注销?如此多的应用程序让用户登录,仅此而已。人们永远不会登录他们朋友 iPhone 的 Facebook 应用程序,不是吗?
  • 我认为您在注销的大部分情况下是正确的,但是我想我只想涵盖所有可能的情况,其中一些信息(例如个人资料图片、姓名、电子邮件、帐户类型等)可以从应用程序只需注销。所有应用程序都允许注销,但是是的,我永远不会登录朋友手机上的特定应用程序。登录期间下载的数据量相当小,这就是为什么我想基本上从手机中删除所有用户特定表(用户、设置、活动等)并在登录时创建新表,但保留通用表(新闻等)。

标签: ios sqlite


【解决方案1】:

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

【讨论】:

  • 没问题,GRDB 很棒而且非常好用!
猜你喜欢
  • 2012-04-10
  • 1970-01-01
  • 2013-01-18
  • 2012-05-29
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2011-09-14
相关资源
最近更新 更多