5

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

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

这都是客户端 JS 并且可以公开查看。我很难找到绕过它的方法。

4

2 回答 2

2

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

于 2013-12-31T04:33:58.833 回答
2

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

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

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

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

  2. 加密你需要的东西

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

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

于 2013-12-28T00:03:26.693 回答