Ajax登录:密码加密

时间:2011-06-07 18:00:00

标签: encryption jquery login password-encryption

我正在使用jQuery Ajax登录用户。现在,我使用JS从用户名和密码文本框中获取值,并将它们发送到检查凭据的aspx页面。然后它返回JSON,让用户知道他们是否登录。一切运作良好,但我注意到使用Firebug时密码是以纯文本形式发送的。

加密密码的最佳方式是什么? (顺便说一句,我不在HTTPS服务器上)

4 个答案:

答案 0 :(得分:3)

Bcrypt可能是你的朋友。并且在Javascript中还有一个名为jsBCrypt的实现。我强烈建议您阅读这篇富有洞察力的文章:Storing passwords in uncrackable form

但是:小心!如果您不使用SSL或提供的服务器nonce,您可能容易受到中间人攻击。如果有人读取客户端和服务器之间的(未加密的)流量,他将获得加密密码。而且只要他不知道真正的密码就可以用它来对服务器进行身份验证。

答案 1 :(得分:2)

您想使用https。请注意,即使你这样做,你仍然会在浏览器中看到未加密的值,因为当firebug抓取数据时(无论哪种方式)它还没有被加密/解密。

我真的认为咬紧牙关并设置https是可行的方法。它是经过严格审查的技术。如果你想自己动手,它就不会安全,你将不得不在客户端和服务器上做很多工作。

答案 2 :(得分:0)

为什么不在发送之前使用sha1(http://www.webtoolkit.info/javascript-sha1.html)和哈希密码? 您应该将密码存储在数据库中。因此,如果您以纯文本格式存储它将是一个很好的做法。

答案 3 :(得分:0)

可以通过使用多个工具通过Ajax完成此操作。我个人这样做是为了登录数据库应用程序。不幸的是,我不知道实现这一目标的单一解决方案。最终,最好的解决方案是使用SSL证书。但是我已经看到过在安装SSL之前需要安全地站起来的时候。

Bcrypt绝对是在用户数据库中存储密码的更安全的方式,但这适用于后端,而不是Ajax部分。如果您在客户端/浏览器中使用Bcrypt,则加密的字符串仍然会通过Internet进行不安全的传递。

我最近构建的解决方案在浏览器(在JavaScript中)和服务器(在我的情况下,是一个ASP.NET站点)之间使用RSA加密和AES加密。

流程的工作原理如下:

  • 客户端向服务器请求RSA公钥。
  • 服务器发回RSA公钥并保留RSA私钥。
  • 客户端创建一个AES密钥并使用RSA公钥对其进行加密。
  • 加密的AES密钥将发送回服务器并保存在内存中。
  • 现在可以安全地双向传输Ajax消息。
    • 现在,每一方都安全地知道用于加密和解密的AES密钥。

我希望有一个一站式的解决方案可以做到这一切,但我现在还没有意识到这一点。

我使用的库是: