|
|
1
7
不要重新发明轮子,只要使用它 .Net Membership . |
|
|
2
4
否则,请确保您的盐是长的,并使用适当的随机熵。同时确保使用SHA-2而不是SHA-1,因为SHA-1是 considered broken . |
|
|
3
4
听起来他在建议一个与SSL结合的挑战响应方案。这是一个很好的方法,但让我一步一步地解释清楚。 注册后,密码通过ssl发送到服务器。这应该是唯一一次直接发送密码。服务器生成salt并存储以下哈希:
服务器还应该存储盐。 当客户端访问登录页面时,服务器应在表中生成一条记录,其中包含ID和质询值。然后,服务器应将ID、存储的salt和质询值发送给客户端。 当客户端准备登录时,您应该有一个javascript函数来生成质询和哈希,如下所示:
|
|
|
4
3
请阅读以下内容:
这里的要点是:
|
|
|
5
2
您的密码在SSL下,因此您可以发送无凭据文本,因为该行已加密,然后将规则应用于salt/hash您的密码,以便在服务器端进行比较。这样,没有人知道你是如何加密密码的。将信息存储在客户端javascript中只是将这些信息泄露出去。 除此之外,您的方法看起来是正确的。我假设您需要一个定制的解决方案,而不是出于任何原因的内置解决方案。 |
|
|
6
2
你的朋友认为盐应该是独一无二的,这是正确的,但是他在处理盐方面是错误的。
这就要求你要么为每个人使用相同的盐,要么知道用户是谁,这样你就可以向他们发送他们独特的盐。盐不能离开服务器。 |