仅使用密钥(GUID)从winform登录

时间:2014-07-15 10:27:48

标签: c# winforms

现在我的任务是重写一个winform的登录系统,只使用一个密钥作为auth。顾客想象一下像

这样的流程
  1. 下载exe文件
  2. 获取密钥(guid看起来像邮件一样)
  3. 激活你的exe并运行app。
  4. 只需将密钥发送到服务器就可以验证它并轻松获得登录。

    但这是否真的安全我的意思是使用密码和用户名登录我可以通过他的名字查看用户并验证他的密码的hased版本。这样我只会传递用户名和密码的密码。

    只使用密钥如何将其从客户端传递到服务器安全,并且仍然能够再次验证用户数据库。

    我在auth服务器上有一个https和一些ssh证书。

    高级

1 个答案:

答案 0 :(得分:1)

如果您想使用类似串行的激活系统,最常用的方法是:

  • 您在服务器端生成串行(GUID)并将其与用户提供给您的数据(名称,地址等)相关联。
  • 您将序列发送给用户(通过电子邮件等)
  • 用户将您的序列输入已安装的应用程序,此序列存储在操作系统中(例如,注册表)
  • 每次应用程序启动时,它都连接到服务器并提供存储的串行+一些用户信息(optionaly)。然后在服务器端,您决定:允许或禁止用户使用该应用程序(基于某些计数器,机器密钥检查等)。

您要问的主要安全问题是您如何按序列验证具体用户?

  • 您可以根据用户硬件生成unqiue代码,并将其与序列密钥关联存储在服务器上。在服务器端,您监视每个序列的客户端活动,例如每个时间间隔的连接数,不同的机器/ IP,激活号等。因此您可以做出决定是否将此序列泄露给公众。当用户硬件发生变化时,这种方法通常会出现问题。
  • 您可以使用证书来保护服务器和客户端之间的协商以及使用它们的uath。如果你有特定的客户,这种方法可以很好地工作,就像你试图为开放销售软件实施这种方法一样,它肯定会导致应用程序和证书安装的客户端问题。

对于其他安全性,您可能希望在将串行密钥存储在注册表中或将其发送到服务器时对其进行加密/解密。您还可以使用SSL连接到服务器以保护通信。请看:Encrypt and decrypt a string

PS:对安全和许可最好的开发友好方法之一是使用几乎每个应用程序都可以包含的USB硬件密钥:)

这个问题与安全问题密切相关。例如,请阅读此问题How to generate and validate a software license key?