Javascript Node.js、socket.io和mongojs-带有socket.io的登录表单
我目前正在使用Javascript Node.js、socket.io和mongojs-带有socket.io的登录表单,javascript,node.js,mongodb,socket.io,Javascript,Node.js,Mongodb,Socket.io,我目前正在使用mongojs在node.js上创建一个小型聊天应用程序,我有一个带有用户名、密码和姓名字段的mongo用户集合。应用程序使用socket.io实时发送数据,然后对用户进行身份验证,如果身份验证正确,允许用户使用应用程序 但是,我不想以明文形式发送密码,有没有办法在客户端加密密码?或者有更好的方法吗?我曾想过在单独的页面上使用它,但我需要在单个页面上使用它 这是我的客户端代码: function loginUser(){ console.log("Login User");
mongojs
在node.js
上创建一个小型聊天应用程序,我有一个带有用户名、密码和姓名
字段的mongo用户集合。应用程序使用socket.io
实时发送数据,然后对用户进行身份验证,如果身份验证正确,允许用户使用应用程序
但是,我不想以明文形式发送密码,有没有办法在客户端加密密码?或者有更好的方法吗?我曾想过在单独的页面上使用它,但我需要在单个页面上使用它
这是我的客户端代码:
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;
}
嗯。。。很好的问题。我以前从未将socket.io用于身份验证 但是,对于passport,它似乎是Socket IO处理基于身份验证的首选方式。我找不到任何关于passport是否加密数据的信息,但至少它正在使用POST呼叫
最后,我强烈建议不要对密码进行客户端加密 如果在发送密码之前进行哈希运算,则必须按原样存储其密码的哈希(或者可以再次进行哈希运算,这同样没有用)。但是,除非您设置一个公钥/私钥系统来在服务器端对它们进行解密,然后使用单独的哈希算法对它们进行重新哈希,否则您将绝对没有任何额外的好处 我不知道有哪个主要的站点对客户端进行加密,因为公认的标准是使用HTTPS,因为它允许通过SSL/TCP协议对所有传出数据进行加密
需要注意的是,socket.io并不是不安全的,正如您所假设的那样;它遵循基本的互联网协议,将与任何其他不使用https的站点登录一样安全。只是考虑一下。< / P>谢谢你的信息!是的,我实际上假设socket io没有那么安全,我只是想给这个小网站增加更多的安全性。谢谢!我要检查护照,它看起来像是一个有趣的图书馆。我发誓我写了关于PGP加密。。。我不知道为什么它被剪掉了。。。