2012-04-14 43 views
0

问题出在这里:我正在开发一个桌面应用程序来与服务器连接,并且客户端必须登录。与Skype或IM应用程序类似。我想给客户自动登录的选项,即。每次应用程序加载时无需输入凭据。如何安全地为桌面应用程序实施“自动登录”功能?

我该如何做到这一点,同时保护客户的信息?

谢谢,我一直在思考这个问题好几天了,我似乎无法想出一个解决方案。在这个阶段任何帮助或指导都将是黄金。

回答

1

如果你正在使用一个安全的通信通道到服务器(例如使用SSL),那么你可以发送用户名和密码的散列(使用SHA-512等加密安全散列函数 - 没有已知的可行的碰撞或原像攻击)。

您在本地保存的是用户名和密码的散列。考虑到与服务器的通信通道是安全的,没有人会看到发送的信息(不可能有重放攻击)。使用密码安全散列函数意味着它是单向函数,不会返回原始输入。

另一种方法是在成功登录后从服务器获取身份验证令牌。然后,协议可以在一定时间内接受与令牌相结合的用户认证。然后,您不必在本地存储密码的散列,只需存储用户名和令牌。因此,如果有人获得令牌,它将在某个时间点到期。但请记住,不应使用其他标记重新发布标记,只能使用正确的用户名/密码组合。此外,如果使用令牌登录,则用户不应该能够更改/查看密码。如果你想更进一步,那么你也可以限制令牌只能从某个IP地址工作。

+0

但是如果可以访问本地数据,并且在另一个客户端上,您只需替换用户名和散列值的值呢?如何安全地存储本地信息? – rtheunissen 2012-04-14 10:34:39

+0

这就是令牌应该缓解的事情。但是,如果您想在本地存储(用户名,密码哈希),那么您需要使用加密技术来完成,而且无论如何都需要密钥。 – 2012-04-14 10:51:48

+0

现在有道理,因为只有开发者管理员才能访问该密钥。辉煌。 :) +1 – rtheunissen 2012-04-14 10:53:31

相关问题