我们使用的是Asp.net身份验证(当前版本为2)。为了本地用户身份验证的目的,框架需要明文密码。据我所知,这不是传输密码的安全方法。如何在Asp.net身份登录时输入密码
一个快速的答案可以是:使用SSL来加密密码传输,但这不是一个可行的解决方案给大家。
这是我们认为的: 登录表单提供了一次性随机令牌,然后它将密码散列,并将其附加到令牌并再次散列。结果被发送到服务器。 服务器具有密码和随机令牌的散列,将它们连接在一起,如果它们的散列等于客户端发送的内容,则继续登录过程。
这对于Asp.net标识提供的当前api是不可能的:它期望原始密码。
我们该怎么办?仅依赖于ssl?有没有一种方法来确保没有SSL的密码传输?
为什么SSL不是一个可行的解决方案?以明文方式传输密码或使用伪劣哈希算法甚至可以降低可行性。 – DGibbs
SSL/TLS是您的最佳选择。其他选择是浪费时间和安全漏洞。 – oleksii
在你的实现描述中,我可以看到至少有一个安全漏洞:你的来自客户端的散列基本上变成了密码,你需要自己保护它。请不要自己做密码学 - 你不会这样做。要么使用SSL,要么你的客户将不得不通过http将其吸收并转移密码 - 如果他们无法承担使用SSL的托管服务(你可以获得这些天的免费证书) – trailmax