我正在开发这个Android应用程序,用户可以在Web服务器上将其SQLite数据库更新到最新版本。一切正常,用户点击应用程序上的按钮,并将最新版本的数据库下载到Android中。
这些用户只需安装应用程序,无需对单个用户进行身份验证(用户没有用户名/密码)。即:每个人都使用相同的数据库。数据根本不是用户特定的。并且无需设置双向同步。
问题是任何人都可以访问(下载)数据库。我们必须阻止其他人手动下载数据库。该数据库将使用php托管在Apache Web服务器中。我可以实现php代码来控制对SQLite数据库(更新文件)的访问。
有没有办法在php中验证我们在Android手机中制作的应用程序,以便只有这个应用程序的用户可以直接将数据库下载到手机中。
P.S。 我已经考虑将密码硬编码到我们可以验证下载请求的应用程序中。但是密码将由一个静态的硬编码字符串组成。我对使用时间旋转密码算法很谨慎,因为在其他时区或不同步时钟的用户将无法更新他们的数据库。
答案 0 :(得分:2)
您可以在电话应用程序和服务器中存储共享密钥,然后随时获取来自Web服务的随机密钥以进行重新分析并将其用作凭据:
Android Phone Server
---------------------------------------------------------------------
"SharedSecret" "SharedSecret"
getRandomKey() <---- "This is some randomKey currently valid"
Authentication:
sha256(RandomKey + SharedSecret) <---> sha256(RandomKey + SharedSecret)