这就是问题所在:我正在开发一个桌面应用程序来与服务器交互,并且客户端必须登录。类似于 Skype 或 IM 应用程序。我想给客户自动登录的选项,即。无需在每次加载应用程序时都输入他们的凭据。
我怎样才能做到这一点,同时保护客户的信息?
谢谢,我这几天一直在思考这个问题,但我似乎无法提出解决方案。在这个阶段,任何帮助或指导都是黄金。
这就是问题所在:我正在开发一个桌面应用程序来与服务器交互,并且客户端必须登录。类似于 Skype 或 IM 应用程序。我想给客户自动登录的选项,即。无需在每次加载应用程序时都输入他们的凭据。
我怎样才能做到这一点,同时保护客户的信息?
谢谢,我这几天一直在思考这个问题,但我似乎无法提出解决方案。在这个阶段,任何帮助或指导都是黄金。
如果您使用与服务器的安全通信通道(例如使用 SSL),那么您可以发送用户名和密码的哈希(使用像 SHA-512 这样的加密安全哈希函数 - 没有已知的可行冲突或原像攻击)。
您在本地保存的是用户名和密码的哈希值。鉴于与服务器的通信通道是安全的,其他任何人都不会看到发送的信息(不可能进行重放攻击)。并且使用加密安全的哈希函数意味着它是一个单向函数,不会“返回”到原始输入。
另一种方法是在成功登录后从服务器获取身份验证令牌。然后协议可以在一定的时间内接受用户的身份验证并结合令牌。然后你不必在本地存储密码的哈希值,只需要用户名和令牌。因此,如果有人获得令牌,它将在某个时候过期。但请记住,不应使用另一个令牌重新颁发令牌,只能使用正确的用户名/密码组合。此外,如果使用令牌登录,用户也不应该能够更改/查看密码。如果您想走得更远,您还可以将令牌限制为只能从某些 IP 地址工作。