2015-05-23 54 views
3

我使用Cordova/PhoneGap为Android和iOS创建移动应用程序,并使用IBM的Cloudant数据库进行存储。我正在使用PouchDB JavaScript库来访问Cloudant数据库。目前,我有这样的代码来访问它...如何使用PouchDB安全连接到Cloudant?

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

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

+0

您的担忧是什么?您是否担心与您的应用程序的用户共享您的Cloudant用户名和密码? –

+0

未必与他们共享,因为他们显然需要访问数据..但更多的是关心这一事实,我的凭据被硬编码到程序中。我知道这将是艰难的,但如果有人想要,他们可以反编译我的应用程序,并有权访问我的源代码...以及我的帐户信息。 – David

回答

1

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

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

你们两个似乎一般都在谈论同样的解决方案。这是一个好主意!非常感谢你们! – David

1

你说得对,Cloudant证书不应该被硬编码到你的客户端应用中。

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

  • 用户与你的web应用程序有Cloudant管理员凭据
  • 应用程序认证为创建一个数据库身份验证的用户,并创建与_reader & _writer接入(https://docs.cloudant.com/api.html#authorization
  • 应用程序通信该证书与客户端(在那里,如果你婉它们可以被存储在“本地” PouchDB文件中,或者只是存储在内存中的Cloudant API密钥t您的用户每次验证)
+0

投票您的答案为'_reader'和'_writer'权限和数据库每个用户模式的附加信息:) –