2011-08-11 65 views
0

我有一个iPhone应用程序,必须脱机工作,并且需要能够被用于多个用户使用相同的设备。最佳方式必须存储在sqlite的iPhone应用程序

我现在存储在sqlite数据库里面的pass。它必须在那里...因为数据库与另一个在正常的sql服务器框中同步。

所以,我读了从主数据库的用户名员工密码&和发回信息到iPhone BD。当用户登录到应用程序时,从本地bd读取。用户离线工作,然后最终再次与master bd同步。

回答

2

我不完全相信你的问题是什么...

如果是“我怎样才能保持窃取存储在设备上的数据的人”,那么答案是不能。如果它被存储在设备上,那么任何有直接物理访问权限的人都可以提取任何存储的秘密。

特别地,如果代码是在该设备上,则黑客可以拉断它的任何加密密钥或其他嵌入资源(包括数据库)。

所以,如果你想防止只知道,你不能。如果材料足够敏感,那么我会完全放弃“断开”模式。

如果它不是敏感的,你只是想保持从闲逛然后就做什么,我们通常做的人:对数据库进行加密并存储在您的应用程序的关键。


去一个远一点,如果你想防止被盗的手机不受损害那么你唯一的选择是有remote wipe enabled。但是,即使这样也只能挽救你,如果丢失的手机被迅速报告,偷走它的人不知道如何抽出SIM卡来阻止它。


在这一天结束,黑莓仍然打击苹果远在安全性。


UPDATE:我的意见将是太长。

@mamcx:我不认为你很了解你的问题的范围。 任何设备上的数据可能会受到影响,including passwords stored in the keychain。 iPhone真的不那么难。

比方说,你与盐散列密码,并将其存储在本地sqllite分贝。现在,当他们的用户名和密码,你的代码断开连接的用户类型将哈希他们键入了加盐并将其与在当地的分贝值。

所有必要做到这一点的信息被存储在设备上,由于它的断开性质。这包括散列算法和盐。

现在,让我们说的设备被盗或内部员工决定戴黑帽子。提取所有数据很简单。这可以以非破坏性的方式完成,并且该设备可以被放回,没有任何人知道它缺少。此时黑客只要想创建彩虹表来破解密码。哎呀,有些公司会在各种云层上租用时间到build the rainbow tables for you

当然,密码本身并不是必需的,除非黑客想要转售它们,因为所有的数据都已经丢失。

所以,问题是:数据有多重要?如果你不能失去它,不要让应用程序运行断开连接。如果不是那么重要,那么千万要在本地做。只要让用户知道他们不应该使用他们在别处使用的用户名/密码。

+0

我想尽可能保护存储在sqlite数据库中的密码。我认为哈希它,也许放一种盐。然而,把它放在一个资源是愚蠢的,所以也许硬核盐是我下一个最好的解决方案。问题是,我将需要相同的盐为服务器+客户端 – mamcx

+0

思考它,当BD是同步,在那一刻,我在线,我想知道如果在登录选项我可以返回散列,存储它在keychan中使用它... – mamcx

+0

@mamcx:请参阅更新 – NotMe

相关问题