有没有任何方法可以针对php网络应用程序验证android应用程序


Is there any way to Authenticate an android App against a php web application

我正在开发这个Android应用程序,用户可以在web服务器上将他们的SQLite数据库更新到最新版本。一切都很好,直到用户点击应用程序上的按钮,最新版本的数据库被下载到Android中。

这些用户只需安装应用程序,无需对单个用户进行身份验证(用户没有用户名/密码)。即:每个人都在使用相同的数据库。数据根本不是特定于用户的。并且不需要设置双向同步。

问题是任何人都可以访问(下载)数据库。我们必须防止其他人手动下载数据库。该数据库将托管在带有php的Apache web服务器中。我可以实现php代码来控制对SQLite数据库(更新文件)的访问。

php中是否有任何方法可以验证我们在Android手机中制作的应用程序,以便只有该应用程序的用户才能将数据库直接下载到他们的手机中。

p.S。我已经考虑过在应用程序中硬编码一个密码,我们可以用它来验证下载请求。但随后密码将由一段静态的硬编码字符串组成。我对使用时间轮换密码算法持谨慎态度,因为其他时区或时钟不同步的用户将无法更新他们的数据库。

您可以将共享密钥存储在手机应用程序和服务器中,然后不时从Web服务中获取一个随机密钥以重新散列并将其用作凭据:

Android Phone                           Server
---------------------------------------------------------------------
"SharedSecret"                          "SharedSecret"
getRandomKey()                  <----   "This is some randomKey currently valid"
Authentication:
sha256(RandomKey + SharedSecret) <--->  sha256(RandomKey + SharedSecret)