访问/破解/更改存储在iPhone中的“核心数据”数据有多容易或困难?

时间:2010-12-10 20:31:02

标签: iphone core-data

我的应用程序将在数据库中保存一个标志(核心数据),说明用户是否经过身份验证。有人访问“核心数据”数据库并通过应用程序更改而不会的信息是多么容易或困难?

我要在那里保存一个标记,说“此用户已通过身份验证”,因此他无需再次进行身份验证。这是一个有趣的应用程序,而不是银行应用程序,所以我想知道这是否可以。

换句话说:我是否应该假设一个普通的iPhone用户(当然不是越狱)将无法搞乱“核心数据”数据库,而且这个数据库只能通过其预定的iPhone应用程序访问?

3 个答案:

答案 0 :(得分:5)

这不是你应该使用Core Data的东西。您应该使用NSUserDefaults或钥匙串(取决于您是否只存储该标志或相关的用户/密码信息)。

用户默认值用于存储设置,私钥数据的钥匙串。使用合适的螺丝刀拧紧正确的螺丝。

答案 1 :(得分:3)

iOS应用程序沙箱在设备上相当紧凑。因此,其他应用程序将无法访问您的数据库,用户也无法访问设备。

然而,应用程序的Documents目录中的应用程序数据通过iTunes备份。虽然我从未尝试过这样的事情,但我可以想象用户安装并运行您的应用程序但未经过身份验证的情况。他同步并将用户数据写入他的计算机。他在他的PC上打开备份资源(iTunes会加密或混淆它)并找出如何更改sqlite数据库或plist以显示自己已经过身份验证。然后他在他的设备上卸载应用程序,然后通过iTunes重新安装,验证自己。

如果可能出现这种情况,您可能会将数据库存储在缓存目录中,而不是当设备与iTunes同步时未备份的目录。这意味着如果用户必须恢复他的设备,数据库将会消失,但这可能是您方案中可接受的损失,我不知道。

修改 我同意jer数据库不是存储此类信息的最佳位置,如果您的目标是iOS 3.2及更高版本,则钥匙串肯定是更好的地方。

答案 2 :(得分:1)

我不相信非越狱手机上的用户会弄乱这些数据。