【问题标题】:iPhone = How to check iPhone Sqlite database is modified externallyiPhone = 如何检查 iPhone Sqlite 数据库是否被外部修改
【发布时间】:2011-07-31 12:17:56
【问题描述】:

我正在制作一个 iPhone 应用程序,因为我的所有内容都存储在 sqlite 数据库中。

现在总是存在越狱和其他垃圾邮件活动的威胁。所以才知道Mac/windows可以通过一些软件直接访问应用目录。

所以我想保证我的数据库的安全,如果有人要修改/替换数据库,那么当我启动我的应用程序时,我应该使用代码得到通知,说明对数据库进行了一些更改。

任何人都可以建议如何使用 iPhone 执行此操作?任何教程或代码?

我将使用一些加密算法以加密格式存储数据,但是我想知道如何保护 SQLITE 数据库不被修改

提前致谢。

【问题讨论】:

    标签: iphone sqlite ios4 encryption iphone-sdk-3.0


    【解决方案1】:

    你真的无法知道

    如果您想尽最大努力,可以执行类似计算数据库的 sha512 或 sha256 校验和,并将其存储在另一个文件中,但它需要读取 em>整个 数据库在每次应用程序启动时 关闭,这可能不会让用户满意。这需要时间,而不仅仅是让 SQLite3 在读写方面发挥其魔力。

    并且有人恶意也可以修改存储的校验和。 (如果他们可以访问您程序的目标代码,就很容易弄清楚您是如何做的,因此尝试混淆假设的哈希检查例程没有任何意义。)

    不管怎样,这是他们的数据,对吧? :) 所以如果他们想在幕后摆弄,让他们去做吧。您需要确保您在服务器上接受的任何输入都受到与从 Web 浏览器接受输入时相同的不信任处理。

    【讨论】:

    • 每次我的应用程序进入后台或唤醒时,我是否可以检查数据库文件,数据库中是否有任何更新或进行了任何修改或任何方式来做到这一点,例如更改场地 ?我可以保护我的 SQLITE 数据库密码吗?
    • @iPhone 有趣,您可能可以在每次睡眠/唤醒时检查数据库,但这会进一步减慢任务切换。除非您的数据库非常小,否则您的用户可能会不喜欢这个。您可能可以在数据库周围构建一个加密包装器,但无疑会为任务切换增加严重延迟。
    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2014-04-28
    相关资源
    最近更新 更多