database - 如何确保我的数据库在 Mac OS X 开发中安全?

标签 database macos cocoa security core-data

我正在开发一个 Mac OS X 应用程序,其中将包含用户数据。 Core data/Sqlite 是存储用户数据库的不错选择。但我想确保用户数据是高度安全的。那么我们在 Mac 平台上有什么选择来开发安全数据库呢?

最佳答案

您有多个选项可以与 Core Data 一起使用。但当软件运行且解密 key 处于“实时”状态时,这些方法都无法保护您的数据。

第一个选项是使用加密的磁盘镜像来存储数据库文件。这在 iOS 上不是必需的,默认情况下所有文件都会加密,但您可以配置一些加密方面以实现更严格的安全设置(谷歌搜索 NSFileProtectionKey)。在 OS X 上,等效技术是 FileVault,但它在大多数时间不会处于事件状态,因此您不应该指望它。所以是的,磁盘镜像在软件启动时安装并提供正确的密码,在软件退出时卸载。您可能希望使用辅助进程来保护磁盘镜像免受应用程序崩溃的影响,该辅助进程会监视主应用程序并在应用程序崩溃或退出而未正确卸载它时卸载镜像。

第二个选项是编写一个 NSValueTransformer 来加密实体中的每个敏感属性。这里的保护是属性级别的。它可能足够好,也可能不够好,并且它会影响获取请求的工作方式。

第三个选项是编写您自己的持久存储(通过子类化 NSAtomicStore)。但这并非没有后果,必须仔细评估该解决方案。

除此之外,不要忘记类(class)的基础:钥匙串(keychain)、PBKDF2 之类的 key 拉伸(stretch)函数、密码盐等等。

关于database - 如何确保我的数据库在 Mac OS X 开发中安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554497/

相关文章:

MySQL(涉及数组)需要表建议

xcode - 与多个 bundle 共享框架的单个副本

ios - iOS 应用程序与 MacOS 应用程序之间的通信

javascript - TideSDK中Appcelerator的 `Titanium.UI.openFileChooserDialog`失败

objective-c - 有没有更好的方法从其 subview 访问文档?

cocoa - 拖放到沙盒应用程序中

database - 在 kubernetes 中部署 postgres 时,用户和数据库未通过环境变量初始化

mongodb - 如何在 Windows 上启动 mongo db

带有无尽子项的 MySQL 嵌套 SELECT 查询

c++ - 避免位 block 传送时的色彩空间转换,Mac OS X 10.11 SDK