0

假设我有一个如下所示的登录 Web 表单:

用户 ID:测试用户

密码:ThisIsStrongPwd

[登录](按钮)

现在,我要做的就是在用户单击 [LOGIN] 按钮时加密密码(使用行业公认的安全措施)。

我知道 SSL 会加密整个 POST,对吧?这些步骤将类似于:

  1. 用户输入 ID 和密码。
  2. 用户单击 [LOGIN] 按钮 信息被安全地发布到 Web 服务器。 - - 如何?
  3. 服务器端检查用户发布的密码与数据库中的(散列)密码。
  4. 服务器将其 default.aspx 页面或 index.htm 页面或未加密(非 SSL)URL 上的任何内容返回给用户。

没有必要对会话的其余部分进行加密——而且可能很慢。例如,您将如何使用 ASP.NET 来做到这一点?还是 ASP.NET MVC?

4

3 回答 3

2

..我想做的就是加密密码(使用行业认可的安全措施)..

对于您的用例,SSL 是唯一被行业接受的安全措施。有一些方法可以在不需要 ssl 的情况下从浏览器加密和发送表单数据,例如jCryption。但它们不能替代 SSL。阅读这个被认为是有害的 Javascript 密码学

于 2013-04-25T18:25:12.237 回答
1

这在您将接受您(服务器)不知道的用户的应用程序中是不可能的。您面临的基本问题是需要共享一个秘密,该秘密将使您能够加密和解密其他人无法读取的信息。

如果没有协商该秘密的过程,您就无法安全地进行通信。协商该秘密是 SSL/TLS 的关键特性之一。

阅读 TLS 的历史和实现可能会很有用,以了解为什么有必要拥有一个完全安全的通道。您可能也有兴趣了解会话劫持,这是一种第三方可以“窃取”在 SSL 会话之外公开的登录令牌的机制。

于 2013-04-25T17:58:02.947 回答
1

SSL 用于加密传输层,它不是加密特定值的工具。页面的所有请求和响应都是加密的,这是确保页面安全的关键。

您只能从安全的页面安全地发送数据。如果您仅以一种方式加密数据,那么您将从不安全的页面发送数据。有人可能截获了该页面并在其中添加了在加密之前窃取密码的代码。

于 2013-04-25T17:37:41.020 回答