是否可以保护使用PhoneGap + HTML5创建的移动应用内的sqlite数据库?我有一大块数据,我想保护。但是从使用过的技术的本质来看,它在我看来几乎是不可能的。如果无法保护数据,是否至少可以使用一些模糊处理来阻止“脚本小子”不要轻易获取数据?
答案 0 :(得分:1)
您可以做的一件事是在数据进入数据库时加密数据,然后在数据恢复时对其进行解密。要以半可维护的方式执行此操作,您需要某种类型的数据库访问层,以便加密/解密,以便您的主应用程序无需担心它。
我对PhoneGap并不是特别熟悉,所以我不确定是否有任何现有的插件可以做到这一点。但是,如果您不介意加密/解密与您的应用程序代码相关的麻烦,您可以通过encrypt(myData)
函数在进入数据库的过程中通过decrypt(myData)
传递所有内容。出路的功能。如果您只是在几个地方进出数据库,这将非常有效。
这是一个相当重量级的解决方案,但正如您所说,选项相当有限。
最后,我建议使用设备ID(如果你可以使用它),或者使用其他每个帐户或每个设备获取加密密钥的方法,这样每个设备都难以破解,而不是全部设备使用相同的密钥。用户名或盐渍用户名的哈希值或密码的盐渍哈希哈希哈希可能都是不错的选择。
答案 1 :(得分:1)
您的软件用户拥有更多控制sqlite数据库的权利。您的软件只是他的计算机上的访问者。任何形式的加密都是security though obscurity,因为您无法在设备上拥有秘密(或密钥)。
如果要保护数据库,则必须托管它。我建议设置RESTful接口,以便移动设备上的js可以对数据执行操作。您应该假设攻击者100%访问此RESTful接口。你永远不应该公开像do_query("select ...");
这样的函数。确保考虑sql注入。
答案 2 :(得分:0)
您还可以使用JSAES: AES in JavaScript加密数据,但是您需要与服务器/用户建立某种密钥管理机制。