问题在于:我正在开发一个桌面应用程序来与服务器连接,客户端必须登录。有些像Skype或IM应用程序。我想给客户端选择自动登录,即。每次加载应用程序时都无需输入凭据。
如何在保护客户信息的同时实现这一目标?
谢谢,我几天来一直在思考这个问题,我似乎无法想出一个解决方案。在这个阶段,任何帮助或指导都将是黄金。
答案 0 :(得分:1)
如果您正在使用到服务器的安全通信通道(例如,使用SSL),那么您可以发送用户名和密码的哈希值(使用加密安全哈希函数,如SHA-512) - 这是不可行的碰撞或前像攻击)。
您在本地保存的是用户名和密码的哈希值。鉴于到服务器的通信通道是安全的,没有其他人会看到发送的信息(不可能重放攻击)。使用加密安全散列函数意味着它是一个单向函数,不会“返回”原始输入。
另一种方法是在成功登录后从服务器获取身份验证令牌。然后协议可以在一定的持续时间内接受与令牌结合的用户的认证。然后,您不必在本地存储密码的哈希值,只需存储用户名和令牌。因此,如果有人获得令牌,它将在某个时候到期。但请记住,不应使用其他令牌重新发放令牌,只能使用正确的用户名/密码组合。此外,如果使用令牌登录,用户也无法更改/查看密码。如果您想更进一步,那么您也可以将令牌限制为仅使用某些IP地址。