我目前有一个桌面应用程序,要求用户拥有用户名和密码。这些凭据存储在Web服务器(myserver.com)上,因此当他键入用户名和密码并单击“登录”按钮时,它们将被发送到Web服务器。 如果凭据是正确的,服务器将返回" ok"并显示主窗体。如果没有,服务器将返回"错误"并显示警告。 但是,这是非常不安全的,因为用户只需编辑主机文件,将myserver.com重定向到他的localhost,它始终返回" ok",并绕过登录屏幕。
如何为桌面应用创建更安全的登录表单?
答案 0 :(得分:1)
有一种方法可以验证答案是否来自"信任"服务器是通过生成公共/私有RSA密钥对并在应用程序中包含公钥并将私钥保留在服务器上。然后,当您连接到服务器时,您可以通过让客户端向使用服务器公钥加密的服务器发送随机数字/字符串(" nonce")来进行一些基本的服务器身份验证。查看服务器是否可以以未加密的方式将其发回(使用其私钥解密)。由于只有服务器应该有这个私钥,如果它是未加密的发回,你可以确定它来自" trusted"服务器。之后,您可以对您的用户进行身份验证。
但是,如果您真的想要保护此应用程序,那么您应该解决一些问题 - 例如您将用户名和密码作为纯文本发送到服务器。也许使用SSL而我先前的建议变得毫无意义。接下来,您尝试在应用程序二进制文件中保护的信息是什么?如果是这样,简单的反射可能会将数据暴露给用户。如果您尝试保护的数据是外部数据,那么您需要确保从中提取的数据源可以信任客户的请求已获得授权。