如何保护HTML5+PhoneGap手机应用中的数据

How to protect data in HTML5+PhoneGap mobile app?

本文关键字:应用 手机 数据 HTML5+PhoneGap 何保护 保护      更新时间:2023-09-26

是否可以保护使用PhoneGap + HTML5创建的移动应用程序中的sqlite数据库?我有一大块数据,我想保护它们。但从使用技术的性质来看,在我看来这几乎是不可能的。如果不可能保护数据,那么是否至少可以使用一些混淆来阻止"脚本kiddy"不要轻易尝试获取数据?

软件的用户比您更有权利控制sqlite数据库。你的软件只是一个访问他的机器的人。任何形式的加密都是安全的,尽管不透明,因为你不能在设备上有秘密(或秘密密钥)。

如果你想保护一个数据库,那么你必须托管它。我建议设置一个RESTful接口,以便移动设备上的js可以对数据执行操作。您应该假设攻击者对这个RESTful接口有100%的访问权。永远不要公开像do_query("select ...");这样的函数。确保将sql注入考虑在内。

您可以做的一件事是在数据进入数据库时对其进行加密,然后在数据返回时对其进行解密。为了以一种半可维护的方式做到这一点,你需要某种DB访问层,在那里加密/解密可以发生,这样你的主应用程序就不需要担心它了。

我不是特别精通PhoneGap,所以我不确定是否有任何现有的插件可以做到这一点。但是,如果你不介意加密/解密与应用程序代码耦合的麻烦,你可以通过encrypt(myData)函数在进入DB的路上传递一切,然后通过decrypt(myData)函数在出去的路上。这将工作得很好,如果你只去/从DB在几个地方。

这是一个相当重量级的解决方案,但正如您所说,选项相当有限。

最后,我建议使用设备ID(如果你能得到它),或者其他一些每个帐户或每个设备获取加密密钥的方法,这样每个设备更难以破解,而不是所有设备使用相同的密钥。用户名的散列或盐渍用户名或密码的盐渍散列都可能是不错的选择。

您也可以在JavaScript中使用JSAES: AES加密数据,但是您需要在服务器/用户中使用某种密钥管理机制。