【问题标题】:Obscure username and password in PouchDBPouchDB 中隐藏的用户名和密码
【发布时间】:2014-01-12 08:05:08
【问题描述】:

我正在试验 PouchDB 和客户端 Javascript。 PouchDB 网站上的示例非常适合我:http://pouchdb.com/getting-started.html。我的问题是,当我连接到远程服务器时,有什么方法可以隐藏用户名和密码?有问题的代码:

var remoteCouch = 'http://user:pass@mname.iriscouch.com/todos';

这都是客户端 JS 并且可以公开查看。我很难想办法解决它。

【问题讨论】:

  • 您最好在PouchDB mailing list 上询问。无论如何,这里的用户名和密码很可能是用户拥有的帐户,而不是您拥有的帐户。因此,您会提示他们输入凭据,并可能以某种方式(安全地)记住它们

标签: javascript couchdb pouchdb


【解决方案1】:

当您在服务器之间进行通信时,您可以使用 SSL 来保持安全。客户端和服务器在发送有关请求的任何数据(即文件名、基本身份验证凭据等)之前建立安全连接。

就客户端上的内容而言,更多的是您希望有多安全的问题。由于一切都是 JavaScript,尤其是对于 PouchDB,您必须满足以下两件事之一

  1. 有一个花哨的开关可以显示菜单或隐藏菜单

    在这种情况下,您有一个包含所有重要菜单的主屏幕。用户要么提供正确的密码,将他们带到那个屏幕,要么程序说“错误的用户名或密码”。但由于这一切都在 JavaScript 中,任何对您的系统有足够了解的人都可以说类似MyApp.User.isLoggedIn = function() { return true; };

  2. 加密你需要的东西

    如果客户端存在敏感数据,您可以要求他们提供密码并使用该密码加密敏感数据。根据有效负载,它可能会或可能不会过于密集。在这种情况下,您可能必须实现自己的会话,这样您就不会最终将密码或敏感数据保留在内存中。然后 Eve 所要做的就是去 JS 控制台并点击console.log(MyApp.User.password);。即使密码被散列和加盐(或应该是),Eve 可能仍然可以访问散列函数和加盐。

祝你好运!很想听听你的想法。

【讨论】:

    【解决方案2】:

    如果用户名和密码由用户提供,您可以向他们显示登录提示并使用安全的CouchDB session cookie。 cookie 是防篡改的,将在浏览器会话结束或您明确删除它时被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 2021-09-13
      • 2015-10-23
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多