验证从Phonegap应用程序到REST服务器的呼叫

验证从Phonegap应用程序到REST服务器的呼叫,rest,cordova,basic-authentication,Rest,Cordova,Basic Authentication,我正在用Phonegap构建一个应用程序。它只是读取xml提要,以显示学校上传的最新文章供家长阅读 将有一个选项,应用程序的每个用户都可以决定是否要接收推送通知。我有一个简单的数据库表,其中存储了来自谷歌云控制台的设备注册ID。当用户单击“是”时,注册ID将生成并存储在服务器上。如果他们单击“否”,则会将其删除。我想用基本的HTTP身份验证来保护对服务器的这些调用 我所看到的任何关于基本身份验证的文档都描述了用户名和密码的发送。但在我的应用程序中,没有用户名或密码,因为用户不需要注册。我应该发送

我正在用Phonegap构建一个应用程序。它只是读取xml提要,以显示学校上传的最新文章供家长阅读

将有一个选项,应用程序的每个用户都可以决定是否要接收推送通知。我有一个简单的数据库表,其中存储了来自谷歌云控制台的设备注册ID。当用户单击“是”时,注册ID将生成并存储在服务器上。如果他们单击“否”,则会将其删除。我想用基本的HTTP身份验证来保护对服务器的这些调用


我所看到的任何关于基本身份验证的文档都描述了用户名和密码的发送。但在我的应用程序中,没有用户名或密码,因为用户不需要注册。我应该发送什么来验证客户端?客户端是否有硬编码的密钥,并随每个请求一起发送?解包.apk不容易暴露这一点吗?

因为您可以访问服务器端,所以您可以控制整个过程。因此,为了处理这个问题,您可以考虑web服务器在正常身份验证情况下创建的会话cookie之类的东西

我做了类似的事情,我做的是生成一种令牌服务器端,它存储在设备或本地存储的cookie中

所以流程应该是这样的:

  • 生成令牌并将其存储在设备上(cookies或本地存储)
  • 对于每个请求,在http头中发送此值
  • 从服务器端,您可以通过该令牌识别用户。
    例如:维护一个标识设备/令牌的表

就这样

我反对这个问题的前提。实际上,我认为这不是一个安全问题,而是一个偏好问题。理解这些区别可以使功能的开发更加容易

只需修改您的应用程序,允许用户配置他或她希望在设置中看到的内容,然后将首选项存储在客户端的任何位置(如本地存储)。然后服务器可以像以前一样推送,但应用程序应该拒绝呈现用户不想看到的推送


如果您只想将非敏感内容分发给想要查看的用户,这是一个首选项问题和/或发布/订阅问题。但是这不是一个安全问题。

除了其他答案所说的之外,您还可以将自定义useragent字符串作为请求的一部分传递,并验证它是否符合您的预期。这并不是一种确保请求“安全”的可靠方法,但再加上(简单的)令牌系统和HTTPS,就足以满足您的需要了