phonegap应用程序中的本地存储保护

 手机用户2502882291 发布于 2023-02-12 16:38

我应该开发一个phonegap应用程序.我需要加密我对服务器端的请求,然后解密. HTTPS不是解决方案,因为我需要签署请求以确保数据不是假的.我可以使用任何异步加密(应用程序将生成private/public密钥并将公钥发送到服务器).但这样我需要将我的私钥保存在设备上.

问题是:如何安全地将私钥保存在设备上?

我可以使用sqlclipher(加密我的本地SQLite数据库)并将其集成到我的phonegap应用程序中.很好,但在这里我必须为数据库保密密钥:)

var db = window.sqlitePlugin.openDatabase({name: "DB", key: "secret1"});

任何有权访问手机的人都可以获得此密钥.所以这里我有同样的问题:)

拜托,给我任何建议.

谢谢!

适用于iOS和Android的ps应用

1 个回答
  • 您必须区分加密和身份验证.

    首先,我建议使用https加密您的邮件并安全地传输它们.

    其次,我建议使用HMAC来验证您的邮件.它基本上是这样的:

    在编译时生成应用程序和服务器已知的秘密字符串.您可以将此秘密直接存储在应用程序的源代码中,以便永远不会传输到服务器或从服务器传输.这可能是您的私钥/公钥方法的主要区别:您可以将秘密编译到您的应用程序中,而不是稍后在一些用户可访问的存储中编写它."直接进入你的应用程序"意味着Phonegap不在你的HTML/JS文件中,而是在本机源代码中!如有必要,您必须将访问者桥接到javascript.

    当用户第一次启动您的应用时,在您的应用中设置用户ID(= key; long,random!).如果要对用户进行身份验证,可能需要某种登录/密码机制.(存储用户ID以及从设备上的用户ID和共享密钥生成的HMAC.每次读取用户ID时,请根据哈希检查以确保用户ID未被欺骗.)

    在你的应用程序中

      在每封邮件中包含用户ID.

      在每条消息中包含时间戳.

      根据消息,服务器地址,请求URI和共享密钥放在一起的字符串计算HMAC哈希值.

      在请求标头中包含哈希值.

    在服务器端

      检查时间戳是否有效,例如不超过2分钟左右.这可以防止重放攻击(至少在2分钟后).

      如果用户标识有效,请检入您的数据库.

      根据消息,服务器地址,请求URI和共享密钥放在一起的字符串计算HMAC哈希值.包括请求URI会阻止人们将相同的有效请求发送到服务器上的另一个URI; 例如,在REST环境中,如果您向/comment/1或发送相同的DELETE请求,则会有很大的不同/user/1.

      将它与标题中提交的哈希值进行比较,它们必须相等.

      如果任何检查失败,请发送错误.否则发送回复.

    通过反编译源代码,有可能获得共享机密和有关计算HMAC哈希的方式的信息.我认为没办法避免这种风险....没有深入本土发展:

    iOS钥匙扣

    https://developer.apple.com/library/ios/documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

    Android安全功能

    http://developer.android.com/training/articles/security-tips.html

    2023-02-12 16:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有