我正在开发一个企业应用程序,客户端需要从设备远程擦除应用程序存储的所有数据。也就是说,在用户报告丢失的设备的情况下。
如果我们忘记了它的服务端实现,甚至可以远程擦除存储在应用程序沙箱中的数据。如何删除应用程序资源中存在的文件,如sqllite文件和证书?
我正在浏览网络,并且this site声称在他们的产品中这样做了。
如果可以做到,我们该如何解决这个问题?
Apple在iOS 4.2中使用移动设备添加了远程擦除功能。我不认为他们通过远程通知这样做。在这种情况下,没有任何确定的镜头保证,数据将从设备中删除。
答案 0 :(得分:4)
最好的方法是加密iPhone磁盘上的数据并仅在内存中解密(因为iOS 4内置了类似的机制)。 在让用户使用数据之前,您询问服务器是否允许iPhone加密数据(更好的方法是服务器为iPhone提供解密数据的密钥,因此攻击者无法找到它在代码中)。如果服务器拒绝请求,应用程序将擦除所有存储的数据,您就完成了。
这当然只适用于允许您的应用程序需要互联网连接(或至少与本地内部网连接以便与服务器通信)
答案 1 :(得分:2)
我能想到满足这一要求的唯一方法是设置远程通知,并在应用程序中使用通知处理程序激活敏感数据。这不是最好的方法(我更喜欢这个帖子中的其他一些建议),但从纯粹的要求来看,Apple Remote Notifications似乎是唯一的方法。
答案 2 :(得分:0)
我认为你应该存储你想要在Documents文件夹中擦除的所有数据,然后在需要时擦除它
答案 3 :(得分:0)
我们可以在获取通知时删除存储在sqlite或文档文件夹中的项目。但只有在您打开应用程序并获取通知时才可以这样做。 我举一个例子: 当应用程序打开时,用户将从您的本地服务器获得一些消息(可能正在登录或加载您的第一个屏幕时)。 当你收到这条消息时,从你曾经使用的sqlite或文件夹中删除数据。
但是在上述情况下,需要打开应用程序。如果即使未启动应用程序也需要删除数据,可能需要使用推送通知
答案 4 :(得分:0)
您提到的网络方面是谈论擦除邮件和日历数据。
假设您已启用推送功能(details),可以使用MobileMe服务完全擦除手机。
然后再次,如果有人“找到”手机并且足够聪明,可以在发出远程擦除命令之前在“设置”中禁用“推送”和Find My iPhone
,他们可以放弃您的数据。这足以吓跑小偷的电话窃贼,但不是那个追踪你数据的人。
应用可以删除自己的数据。但它只能在活动时(前景或背景)才能这样做。再次成为一个时间问题,你告诉应用程序删除需要删除的内容,然后有人才能提取它。
答案 5 :(得分:-1)
将所有内容存储在Documents文件夹中。然后使用此线程上的代码删除所有内容
NSFileManager *fileMgr = [[[NSFileManager alloc] init] autorelease];
NSError *error = nil;
NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:documentsDir error:&error];
if (error == nil) {
for (NSString *path in directoryContents) {
if([path isEqualToString:@"cache.db"]) {
//dont delete db
}
else {
NSString *myFilePath = [documentsDir stringByAppendingPathComponent:path];
//NSLog(myFilePath);
BOOL removeSuccess = [fileMgr removeItemAtPath:myFilePath error:&error];
if (!removeSuccess) {
//handle errors?
NSLog(@"Not deleted: %@ %@", path, [error userInfo]);
}
}
}
} else {
// Error handling
//...
}
Deleting all the files in the iPhone sandbox (documents folder)?