如何将web应用程序的登录和密码数据传递给桌面应用程序而不产生任何安全风险

How to pass login and password data for a web app to a desktop application without causing any security risks

本文关键字:应用程序 桌面 任何 安全 web 登录 数据 密码      更新时间:2023-10-16

所以我想做以下事情:一个人在线注册并为桌面和web应用程序选择他们的登录名和密码(两个应用程序的登录名和密码相同)然后他们下载桌面应用程序(用c++编写,Qt是跨平台的)然后,登录名和密码自动传递到桌面应用程序,而不需要用户输入这些数据。登录名和密码用于与服务器进行身份验证。

每个版本的桌面应用程序需要单独编码的人的登录名和密码基于他们在网页上注册的事实。

所以这里有一个更简单的解释:1. 用户在网站上注册并选择loginpassword2. 用户在自己的计算机上下载桌面客户端3.用户运行桌面客户端(c++二进制),并从步骤

请求登录名/密码。

我希望该软件第一次填写登录/密码自动在步骤3。这可能吗?如何做到不存在安全风险?

主要问题是,任何人都可以执行该程序并获得对用户帐户的访问权。我建议使用一次性登录进行第一次身份验证,并在第一次启动后,通过ssl连接获取用户/密码信息。之后,删除您的一次性登录令牌,并将其替换为实际登录。

我真的不知道你是否要求精确的代码示例或只是想有一个基本的概念…但无论如何,在应用程序中存储登录数据本身存在安全风险。

你看过HTTP认证吗?我不完全了解QT应用程序的下载过程,但是,如果您在web服务器上使用基本/摘要身份验证,那么传播身份验证令牌将是容易和安全的。基本采用64基编码,摘要采用MD5散列。很多库已经实现了这些步骤(Java世界中的Spring Security和Shiro)。

我看到了两种方法:

  • 服务器可以为用户提供下载安装包的唯一链接。服务器补丁包使用唯一的一次性密码。因此客户端将能够第一次登录
  • 浏览器收集用户计算机的一些信息。如IP、MAC、OS版本等。然后根据这些数据计算出计算机的数字符号。c++二进制文件也是如此。您可以使用该数字签名作为一次性密码。
相关文章: