c#本地存储用于在线验证的密码

时间:2016-04-20 18:36:52

标签: c# winforms passwords

我想知道最好的方法是什么。基本上我的程序的行为类似于PC的Steam应用程序,或者自动登录用户的Spotify。

换句话说,用户在我们的网站上创建了一个在线帐户。通过此帐户登录(电子邮件和密码),他们可以登录我们的c#应用程序并访问该程序的功能。

我的工作正常,因为c#app通过互联网安全地连接到一个支持SSL的Web服务,该服务访问网站的数据库并验证登录信息。我希望这一步是自动化的,所以一旦他们启动程序,它应该自动登录,只要他们至少登录过一次。

最好的方法是什么,而不是破坏他们的登录信息的安全性?

2 个答案:

答案 0 :(得分:0)

创建一个db表,假设它叫做userlogged。 每次用户成功登录时都创建一个GUID。将该GUID存储在用户登录中并将其返回到您的c#应用程序,以便它可以存储在本地(您可以使用Windows注册表,使用Windows注册表(regedit)或任何您想要的更难任何人都可以复制它。)

下次如果GUID存储在本地,将发送到您的应用程序,您的应用程序将记录该用户,并创建一个新的GUID,也将被发送到本地存储(如果有人复制GUID)不会有2个用户同时登录。)

如果日志记录失败,请从数据库中删除GUID。

同时设置一个标志,这样如果用户已经从GUID登录,他将被要求再次登录以进行一些与安全相关的操作,例如更改密码。

答案 1 :(得分:0)

好吧,如果我正确理解你的问题,你想安全地存储用户ID和密码。并在应用程序启动时使用它们进行登录。

它有两个部分

  1. 存储 - 保存这些数据的位置
  2. 安全性 - 如何保护密码

  3. 您可以保留许多位置信息。应用程序配置文件,注册表,INI,本地存储,数据库等。我将留待您做出决定。

  4. 这是保护密码的关键部分。您可以使用Triple DES或AES加密来保护密码。或者,您可以使用Windows数据保护API(DPAPI),它使用操作系统生成和受保护的密钥以及Triple DES加密算法来加密和解密信息。在c#中,您可以使用System.Security.Cryptography.ProtectedData类。
  5. 希望这有帮助。