Javascript 我应该如何向服务器发送用户名和密码?

Javascript 我应该如何向服务器发送用户名和密码?,javascript,security,node.js,passwords,Javascript,Security,Node.js,Passwords,我正在构建一个游戏,玩家可以为其创建帐户,你知道,标准方案。但是,我希望在服务器端(Node.js)和客户端都完全依赖Javascript 我与服务器的主要通信方式通常是Socket.io,我想以明文形式发送密码不是一个好主意,但我不知道为什么!我的意思是,有人能嗅到交通状况吗?这到底是怎么发生的?最重要的是,这个问题的解决方案是什么 我知道我需要在服务器端将密码保存为哈希值。简短回答如下 即使是GMail在2008年之前也没有选择。我经常惊讶于我们仍然如此不关心安全 说到这里,不要使用散列密码

我正在构建一个游戏,玩家可以为其创建帐户,你知道,标准方案。但是,我希望在服务器端(Node.js)和客户端都完全依赖Javascript

我与服务器的主要通信方式通常是Socket.io,我想以明文形式发送密码不是一个好主意,但我不知道为什么!我的意思是,有人能嗅到交通状况吗?这到底是怎么发生的?最重要的是,这个问题的解决方案是什么

我知道我需要在服务器端将密码保存为哈希值。

简短回答如下

即使是GMail在2008年之前也没有选择。我经常惊讶于我们仍然如此不关心安全


说到这里,不要使用散列密码。腌制很容易。。。选择一个词,任意一个词。将其附加到密码并对其进行散列。(即SHA1(password.mysalt))有一些人有过类似的经历。添加一点o盐至少可以防止彩虹攻击

任何人都可以嗅到流量。数据包是通过任何公共网络发送的…当路由器收到数据包时,它不是为了他们的网络,它们会传递数据包…但是你可以在那里使用嗅探器来捕获所有流量。通常,嗅探在无线网络中更为普遍,因为无线传输比有线传输更容易被截获……但这意味着嗅探器必须位于无线网络附近。一种流行的技术是会话劫持——嗅探器在HTTP请求中找到会话ID(查看cookie),然后他们所要做的就是将cookie值设置为jackprepend,而不是附加。另外,salt应该是针对每个用户的,不要“选择一个词”,请解释,@GoodPerson,我为什么要做这些事情?更好的是,不要自己滚动,最好使用标准的键派生函数,如scrypt。不追加的原因与某些类型的长度扩展攻击有关。选择每用户salt的原因是为了迫使攻击者按用户创建一个表(即他们无法进行准备工作),我建议不要使用哈希。@elmigranto scrypt比bcrypt更适合使用KBPDF