如何在没有HTTPS的情况下安全地将用户密码输入后端?

时间:2016-08-09 03:12:46

标签: security https

我正在尝试从事涉及用户帐户的业余/教育项目。当然,用户能够安全登录至关重要。我将为用户存储和传输的信息不是个人或个人身份识别的,但原则上我希望密码传输尽可能安全。

我知道从前端安全地将用户密码安全地传递到后端的最佳方法是使用HTTPS。但是,我不想为这个学习/实验项目支付CA费用,而且我也不想获得自签名证书的浏览器警告,因为虽然这是一个业余爱好项目,但我最终还是希望分享它与世界(如投资组合,与朋友分享,让人们真正找到有用和有趣)。

当然,你说得对,如果我希望它是一个“投资组合部分”,我应该使用最佳实践,比如HTTPS,但我仍然不想为最终的费用支付年度CA费用。是一个业余爱好/学习项目。

我正在考虑这里发现的非对称加密解决方案:https://github.com/travist/jsencrypt这与ArthuruhtrA提出的解决方案非常相似,而且似乎很有希望。它使用公钥/私钥,因此我可以使用前端的公钥加密,并使用秘密/私钥在后端解密加密传输(在存储到数据库之前将进行适当的salting /哈希实践) 。如果不是传统的话,这看起来是否相当安全?

是否还有其他更好的方法可以在没有浏览器警告且不必花钱的情况下安全地将用户信息(例如密码)安全地传输到后端?

2 个答案:

答案 0 :(得分:3)

如果您使用JavaScript中的加密密码,那么它就不太安全,因为它只是客户端自定义,即它不是浏览器提供的à服务。

我建议您使用带免费证书的TLS。你应该看看letsencrypt.org

答案 1 :(得分:0)

我不知道对此最好的答案是什么。显然,您已考虑使用自签名证书。我可能错了,但根据操作系统和浏览器的不同,您可能会告诉它信任您签署的证书。

另一种解决方案可能是使用HTTPS背后的非对称加密原则,但不实际使用SSL:在您的网页中包含您的服务器的公钥。使用javascript加密数据。然后,您的服务器将能够使用其私钥对其进行解密,而中间人无法这样做。

希望有所帮助!如果我想出其他的东西,我会在这里添加。

编辑: 再想一想,这种解决方案极易受到中间人攻击。遗憾。