这个问题只有教育目的。此时我正在制作一个小应用程序,我希望在其中包含一个身份验证机制。应用程序在安装时应该可以访问Internet,但是可以脱机工作。到目前为止,我一直在考虑以下解决方案:
1)Classic:发送到身份验证Web服务的用户名和密码(已加密) - Internet连接断开时出现问题。
2)根据主板/硬盘序列号生成密码否 - 这会在组件更改时产生问题。
另外,我想要包含一个'记住密码'复选框。这是最安全的方法吗?我应该在哪里存储这些信息?
我相信你们大多数人已经建立了一个或多或少复杂的认证机制,而且我在征求你的意见。此外,我知道一切都可以被黑,但我想尽可能地让它变得困难。
答案 0 :(得分:5)
不要重新发明轮子!
一些规则:
为简单起见,服务器为客户创建“挑战”。
典型的实施可以是:
您可以使用优秀的哈希算法创建挑战(请查看our very fast SHA-256 functions),然后按以下步骤操作:
答案 1 :(得分:3)
取决于您想要实现的目标。例如,您可能首先从服务器检索一些关键数据,然后始终将其存储在本地,通过login-password加密。这样,PC上就不会存储密码,您必须输入密码才能访问数据。
答案 2 :(得分:3)
为了记住密码,您可以在本地保存其哈希值,这不能用于获取真正的密码...
答案 3 :(得分:2)
您可以使用Cookie执行浏览器操作并将密码存储在加密文件中,或者甚至更好地将其存储到数据库中。请记住,如果用户在服务器上更改了密码,则需要更新数据库密码。 您无需生成密码。您可以要求用户这样做,并检查其复杂性以确保其安全。 并且在连接到Web服务时始终使用SSL,以确保所有数据都可以安全传输。