确保网站中的密码格式

Ensure password format in a website

我目前正在为客户开发一个 Intranet 网站,我遇到了密码管理方面的问题。用户必须登录才能访问该网站。我将手动管理新用户帐户的创建。例如,一位经理会给我一份他想要授予该网站访问权限的所有员工的名单。我将使用生成的密码(每个用户不同的密码)创建每个用户帐户,该密码仅在几天内有效。首次登录时,用户必须将其密码更改为另一个。新密码将有一些要求(即长度、大写字母、其中有一个数字……)。这是很平常的事情。

我的问题是,由于此应用程序将在网络(它是内部网)中运行,我无法在客户端验证密码(客户端可以禁用 Javascript,或者数据可以在网络(即中间人)。此外,我认为通过网络发送干净的密码并不安全,因此我在将密码发送到网络之前使用 SHA-1 在客户端对密码进行哈希处理。

我的问题是,由于服务器对密码进行了哈希处理,因此无法验证长度或是否符合格式要求。

我正在使用 C# 和 MVC 5 框架,但我的问题更多是设计问题,而不是编程问题。

抱歉,介绍很长,非常感谢您的回答

此致

皮埃尔

Also, I don't think it is safe to send a clean password via the network, so I'm using SHA-1 to hash password on the client side before sending it to the network.

这不是必需的。

让我们看看潜在的攻击向量:

  • 数据包嗅探(窃听)

    可以查看网络流量的攻击者可以简单地通过网络查看 SHA-1。因为你没有加盐,所以你没有重播保护。这意味着攻击者可以重新使用 SHA-1 结果并进行身份验证。

    单独使用 SSL(无客户端哈希)将对抗这种攻击。

  • 中间人

    可以对内容进行 MITM 攻击的攻击者可以注入自己的代码以在散列之前嗅探密码。

    单独使用 SSL(无客户端哈希)将对抗这种攻击。

  • 服务器端攻击者

    如果有人可以将代码放到您的服务器上,那您就完蛋了。

简而言之,只需使用 SSL。不需要 "pre-hash"...