防止篡改 iOS 上 Documents 目录中的文件

Posted

技术标签:

【中文标题】防止篡改 iOS 上 Documents 目录中的文件【英文标题】:Prevent tampering to files in Documents directory on iOS 【发布时间】:2014-03-16 00:06:57 【问题描述】:

用户可以拍摄最长 5 秒的视频,然后将其保存到他们的文档目录,然后再将该视频上传到服务器。

但是,用户很容易进入并用更大的视频文件替换该视频文件,例如 10 分钟长,只需使用 iExplorer 之类的应用程序浏览文档目录即可。有没有办法让文件防篡改?也许某种哈希值可以用来比较文件以确保它们没有被篡改?

【问题讨论】:

实际上,您会发现您的大多数用户都不会费心去走那些极端。 是的,您可以使用某种散列。当然,您要么需要将哈希附加到文件中,要么将其存储在其他地方。在您的情况下,似乎只检查文件大小会更容易。 您可以制作文件的 md5 哈希并在应用程序中记住它:iosdevelopertips.com/core-services/… 我同意@HotLicks - 只需检查文件大小。 为什么文件首先需要防篡改?当它上传到服务器时,您正在检查服务器端的大小,对吗?这还不够吗? 【参考方案1】:

如果只是文件大小,请在上传前检查大小。如果您想确保它是相同的文件,请在其上使用 md5 哈希之类的东西。

http://iosdevelopertips.com/core-services/create-md5-hash-from-nsstring-nsdata-or-file.html

【讨论】:

【参考方案2】:

对于您记录并保存在目录中的每个文件,您都可以保存创建/修改日期,因此如果该文件不在您的列表中或该日期并不多,您可以确定用户对其进行了修改。

获取日期:

NSString *videoPath = [directory stringByAppendingPathComponent:videoName];
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:videoPath error:&error];

NSDate *Date = [属性 objectForKey:NSFileModificationDate]; //或NSFileCreationDate

【讨论】:

以上是关于防止篡改 iOS 上 Documents 目录中的文件的主要内容,如果未能解决你的问题,请参考以下文章

从 Documents 目录存储和读取文件 iOS 5

从cordova html页面(cordova)加载保存在iOS App Documents目录中的图像?

iOS - 从 Documents 目录中的 bundle 加载 xib

iOS 沙盒 - 保护 Documents 目录中的数据

iOS:以编程方式阻止 iCloud 备份

检测 Apk 中的代码篡改