2011-09-04 56 views
2

我在我的网站上有一个用户注册表单,它只是使用socket.io以纯文本形式将数据(用户名,密码和电子邮件)发送到服务器。我知道这是一个非常糟糕的解决方案,那么我用什么来隐藏信息呢?你能解释一下人怎么能得到这些信息,所以我知道该怎么避免?我听说过jsAES,它加密了这些东西,但客户端和服务器如何知道密钥?JavaScript,node.js和安全

+0

我对此没有经验,但https使用RSA。您使用公钥在客户端进行加密,在服务器端使用私钥(秘密)进行解密。你可能想要实现RSA。 – pimvdb

回答

8

你可以做的是在JavaScript中使用asymmetric cryptography:在你的代码中包含JavaScript加密代码(例如,RSA,而不是对称AES)和一个公钥。提交后,加密所有输入并将它们发送到使用私钥解密的服务器。然而,一个熟练的攻击者可以简单地改变这个JavaScript或者注入他自己来绕过这个客户端加密。此外,它需要JavaScript,这可能会被安全意识的访问者禁用。

而不是推出自己的解决方案,使用HTTPS。生成密钥对,获取证书并配置服务器以提供HTTPS请求。使用HTTP Strict Transport Security为所有连接强制使用HTTPS。

+0

我确实使用JavaScript,这是我正在制作的在线游戏,而且这是必须的。 – corazza

+2

@bane然后使用HTTPS。这很简单,支持良好,快速和安全,[你可以免费获得证书](http://www.startssl.com/?app=1)。 – phihag

+0

您能否解释这些证书如何进一步工作?我的网站仍然不在线,我甚至没有注册域名!我可以在没有证书的情况下使用该软件,并在我上市时获得该软件吗? – corazza