Delphi认证机制建议
这个问题只有教育目的。目前,我正在制作一个小应用程序,希望在其中包含一个身份验证机制。应用程序在安装时应该可以访问Internet,但安装后可以脱机工作。到目前为止,我一直在考虑以下解决方案: 1) 经典:用户名和密码(加密)发送到身份验证Web服务-Internet连接关闭时出现问题。Delphi认证机制建议,delphi,authentication,Delphi,Authentication,这个问题只有教育目的。目前,我正在制作一个小应用程序,希望在其中包含一个身份验证机制。应用程序在安装时应该可以访问Internet,但安装后可以脱机工作。到目前为止,我一直在考虑以下解决方案: 1) 经典:用户名和密码(加密)发送到身份验证Web服务-Internet连接关闭时出现问题。 2) 根据主板/硬盘序列号生成密码-组件更改时会产生问题 另外,我想包括一个“记住密码”复选框。哪种方法最安全?我应该在哪里存储此信息 我相信你们中的大多数人已经建立了一个或多或少复杂的身份验证机制,我正在征求
2) 根据主板/硬盘序列号生成密码-组件更改时会产生问题 另外,我想包括一个“记住密码”复选框。哪种方法最安全?我应该在哪里存储此信息
我相信你们中的大多数人已经建立了一个或多或少复杂的身份验证机制,我正在征求你们的意见。此外,我知道任何东西都可以被黑客攻击,但我想让它变得尽可能困难。取决于你想要实现什么。例如,您可能首先从服务器检索一些关键数据,然后始终将其存储在本地,并使用登录密码进行加密。这样,电脑上就不会存储密码,您必须输入密码才能访问数据。您可以像浏览器一样使用cookie将密码存储在加密文件中,或者更好地将其存储到数据库中。请记住,如果用户在服务器上更改数据库密码,则需要更新数据库密码。 您不需要生成密码。您可以要求用户这样做,并检查其复杂性以确保其安全。
并且在连接到Web服务时始终使用SSL,以确保所有数据都可以安全传输。为了记住密码,您可以将其哈希保存在本地,而不能将其解散以获得真正的pwd…不要重新发明轮子 一些规则:
- 认证必须是每个用户李>
- 认证必须针对会话,即针对网络连接和某个给定时间李>
- 从不在磁盘上清晰地存储密码,而是使用哈希李>
- 切勿通过网络传输密码,而是使用哈希李>
- 在散列任何值时添加一些“salt”(即随机数据)李>
- 试着达到某种目的
- 用户输入其初始密码,然后向服务器发送SHA-256(通过固定私钥加密,例如)李>
- 服务器将用户名/密码散列存储为密钥/值李>
- 服务器通过创建随机块创建质询(使用一些随机数据的SHA-256,包括当前时间和其他随机+随机值…)李>
- 客户端使用用户刚刚输入的密码散列对这个随机块(从服务器接收)进行散列李>
- 服务器从客户端接收结果,使用存储的用户密码散列计算自己的版本,并比较两个值:如果两个值相同,则质询成功
,而是将密码存储到数据库中。数据库有什么特别之处?这可能更方便,但更好吗?代码< >不需要生成密码< /代码>:世界上有谁会考虑为用户生成密码?我并没有说存储密码是个好主意。我说过他能做到。如果他这样做了,最好将其存储在数据库中,因为它不是