Node.js,socket.io和mongojs – 使用socket.iologin表单

我目前使用mongojsnode.js上创build一个小型聊天应用程序,我有一个用户username, password and name字段的mongo集合。 应用程序使用socket.io实时发送数据,然后对用户进行身份validation,并在身份validation正确的情况下让他使用该应用程序。

但是,我不想以纯文本发送密码,有什么方法在客户端encryption密码? 或者有更好的方法来做到这一点? 我想在单独的页面上使用它,但我需要在单页上执行此操作。

这是我的客户端代码:

 function loginUser(){ console.log("Login User"); username = $('#login-username').val(); password = $('#login-password').val(); //VALIDATIONS socket.emit('auth-user', {"username": username, "password": password}); return false; } 

我强烈build议不要对您的密码进行客户端encryption。

如果在发送密码之前进行哈希处理,则必须按原样存储密码的散列(或者可以再次散列,这同样是无用的)。 但是除非你build立一个公钥/私钥系统来解密服务器端的数据,然后用一个单独的散列algorithm对它们进行重新哈希,那么你将获得绝对的零增益。

我不知道任何encryption客户端的主要网站,因为接受的规范是使用HTTPS,因为它允许所有的外发数据通过SSL / TCP协议发送encryption。

重要的是要注意,socket.io并不是不安全的,因为你似乎认为它是; 它遵循基本的互联网协议,并将与其他网站的login不使用https一样安全。 只是要考虑一下。

嗯…非常好的问题。 我从来没有使用过authentication的socket.io。

但它似乎是护照 , socket.io的通行证,是Socket IO处理基于wiki的authentication的首选方式。 我无法find护照是否encryption数据的任何信息,但至less使用POST调用。

在最后