到目前为止,我很少关心整体的安全考虑,因为我只开发了一些推广的、不重要的iPhone应用程序。
然而,目前,我正在开发一个Mac应用程序,它需要更多的思考,因为它处理敏感的用户信息。
虽然我知道我必须注意保护数据的物理形式(在磁盘上),例如通过加密它,但我想知道它在正常使用应用程序的过程中驻留在内存中有多安全。
因此我想知道::
只要我的应用程序只构建在框架元素(如NSTextField和Core )上,它就有多安全?
Cocoa输入元素对恶意攻击有多敏感?保护使用Core数据存储的保存数据的最佳方法是什么?
发布于 2011-05-23 19:49:06
Objective是一种动态语言,这意味着可以在运行时替换类和特定的类方法。例如,1 1Password插件就是这样进入Safari的,Dropbox是如何进入Finder的。目前,恶意攻击者有可能使用低级别的mach_inject API或其他一些稍高级别的方法(例如SIMBL或OSAX注入)将代码加载到应用程序中。一旦将代码加载到应用程序中,Objective的动态特性在理论上就可以将NSTextField替换为攻击者选择的子类或类中的特定方法,包括侦听和存储用户输入。NSTextField的安全版本是为密码设计的,它可能对此有一些保护,尽管我还没有找到这方面的特定文档。一般来说,Security.framework和密钥链API对内存中的数据有保护作用,而且它们不是基于Objective的,因此很难(尽管仍然有可能)对它们进行干预。
发布于 2011-05-23 20:19:18
为了补充mgorbach上面的回答(这很好),Core Data可以以四种形式存储数据:
.plist、二进制文件或SQLite都不安全。.plist文件可以很容易地读取。二进制文件将更棘手,但AFAIK它没有使用任何加密,任何目标C编码器应该能够很容易地提取其内容。SQLite也不安全。像SQLite管理器 for FireFox或基座 for Mac这样的工具使得读取核心数据SQLite数据变得非常简单。
由于没有核心数据存储方法是安全的,您最好的选择是在将数据提交到磁盘之前对其进行加密。
这没有考虑到内存中的任何攻击。当然,要想取得成功,一个系统通常已经被某种程度地破坏了。
如果最终用户启用了FileVault (加密他们的整个主文件夹),启用了安全的虚拟内存,打开了防火墙,并设置了强大的密码,那么他们对许多攻击都是相当安全的。
https://stackoverflow.com/questions/6099484
复制相似问题