限制对本地PouchDB的访问

时间:2015-10-17 14:43:23

标签: security pouchdb

我想在Web应用程序桌面客户端中使用PouchDB。我在一个计算机用户是通用的环境中工作,不同的人使用同一个计算机帐户。但是,使用我的应用程序,他们必须使用单独的用户名登录,授予他们相应的权限。系统脱机工作,并将周期复制到服务器。

浏览PouchDB的文档并搜索Internet,我了解到本地PouchDB没有访问限制。有权访问客户端/浏览器的任何人原则上都可以访问缓存的数据。在我的网络应用程序中实现任何类型的用户访问控制似乎都是毫无意义的。可以简单地修改代码以允许访问。

我找到了以下可能的解决方案,并想知道这是否可行:

  1. 首先与中央服务器联系 App将用户凭据发送到服务器。服务器使用用户凭据加密特殊的databaseKey,并将此encryptedDatabaseKey发送回客户端应用程序。客户端应用程序将此encryptedDatabaseKey存储在localStorage中,解密包含的databaseKey,使用此databaseKey(例如crypto-pouch)创建并加密本地PouchDB。
    1. 离线使用 用户登录到应用程序,他的凭据用于解密localStorage中的encryptedDatabaseKey,然后才能访问存储的数据。如果有人改变了应用程序的代码,他仍然无法访问加密的PouchDB。
  2. 我看到以下优点:   - 如果没有正确的凭据,则无法访问本地数据   - 多个用户可以访问相同的本地PouchDB,因为databaseKey是相同的。   - 甚至可以定期更改databaseKey(应用程序在连接到服务器期间比较本地encryptedDatabaseKey和从服务器接收的数据,如果它们不同,应用程序使用旧密钥解密数据库并使用新密钥对其进行加密)

    这看起来像是一个可行的解决方案吗?是否有其他/更好的方法来保护本地PouchDB?

1 个答案:

答案 0 :(得分:0)

crypto-pouch确实是加密本地PouchDB的最佳方法。但是,我想你在哪里说

  

离线使用用户登录到应用程序,他的凭据用于解密localStorage中的encryptedDatabaseKey,然后才能访问存储的数据

我认为解密密钥并使用它来解密数据库是没有意义的;您可以像创建和记忆密码的用户一样吗?然后,您可以将其用作crypto-pouch

的键