【问题标题】:How can I securely connect to Cloudant using PouchDB?如何使用 PouchDB 安全地连接到 Cloudant?
【发布时间】:2016-08-02 22:06:20
【问题描述】:

我正在使用 Cordova/PhoneGap 创建适用于 Android 和 iOS 的移动应用程序,并且正在使用 IBM 的 Cloudant 数据库进行存储。我正在使用 PouchDB javascript 库来访问 Cloudant 数据库。目前我有这段代码可以访问它...

db = new PouchDB('https://[myaccount].cloudant.com/[mydb]', {
    auth: {
      username: 'myusername',
      password: 'mypassword'
    }
});

我知道这是非常不安全的,我想知道是否有更安全的方法可以从应用程序内连接到我的数据库?

【问题讨论】:

  • 您有什么顾虑?您是否担心与应用程序的用户共享您的 Cloudant 用户名和密码?
  • 不一定要与他们共享,因为他们显然需要访问数据.. 但更关心的是我的凭据被硬编码到程序中这一事实。我知道这很困难,但如果有人愿意,他们可以反编译我的应用程序并访问我的源代码......以及我的帐户信息。

标签: android ios couchdb pouchdb cloudant


【解决方案1】:

您可能要考虑的一个选项是实施一项服务(例如在云中运行)以注册您的应用的新用户。注册逻辑可能如下所示:

  1. 手机代码与请求用户注册的应用服务通信
  2. 服务调用Cloudant to create an API key,该调用将返回到手机代码
  3. 手机代码将 API 密钥“用户名”和“密码”保存在设备上。然后在auth: { username: 'myusername', password: 'mypassword' } 对象中使用这些凭据。

【讨论】:

  • 一般来说,你们两个似乎在谈论相同的解决方案。这是个好主意!非常感谢你们!
【解决方案2】:

您说得对,Cloudant 凭据永远不应该被硬编码到您的客户端应用程序中。

一种设计模式是使用“每个用户一个数据库”的方法:

  • 用户使用您的具有 Cloudant 管理员凭据的 Web 应用程序进行身份验证
  • 应用程序为经过身份验证的用户创建一个数据库,并创建一个 Cloudant API 密钥,具有 _reader_writer 访问权限 (https://docs.cloudant.com/api.html#authorization)
  • 应用程序将此凭据与客户端通信(它们可以存储在“本地”PouchDB 文档中,或者如果您希望用户每次都进行身份验证,则只存储在内存中)

【讨论】:

  • 投票支持有关“_reader”和“_writer”权限以及每个用户模式的数据库的附加信息的答案:)
猜你喜欢
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
相关资源
最近更新 更多