假设我们有一个客户端和一个服务器。如果客户端想要“连接”到服务器,则需要提供密码(以纯文本形式,通过https传输)。如果客户端要记住密码,它会打开很多漏洞。这些是可以避免的吗?
答案 0 :(得分:2)
我认为你的意思是服务器要记住密码。记住密码的客户是方便和安全之间的直接权衡,在那里讨论的并不多。
通过“哈希”运行密码。从本质上讲,这是一个单向过程 - 您可以从密码到哈希,但不能从密码到哈希。在服务器端,您只存储哈希。当有人想要进行身份验证时,请获取密码,对其进行哈希处理,然后将其与存储的哈希值进行比较。您不必以明文方式存储密码。
这是非常基本的密码处理内容。要做到正确,有一些细微之处。这里有关于c#实现的一些讨论:Hash and salt passwords in C#
如果您的意思是客户记住密码,您仍然不需要存储密码本身。使用服务器进行身份验证并让它返回一个在一定时间后过期的令牌。此令牌可作为登录时使用的凭据。您的客户只需要存储令牌。