首页 > 解决方案 > 两个应用程序之间的安全密码通信

问题描述

我正在编写一个程序,它就像我的同事在日常工作中需要的瑞士军刀。该工具的一个特点是能够远程连接到客户端并对其进行控制。我们已经有一个名为Dameware Mini Remote Control的应用程序,不是我们编写的,它可以完成这项工作。我的应用程序只是在一个进程中启动这个软件并交出用户名和密码,用户已经预先输入。

在 Dameware Tool 的文档中,它说应该使用以下参数调用该进程:“dwrcc.exe [-?|-?:] [-c:] [-h:] [-m:MachineName] [- u:UserName] [-p:Password | -p:"Password"] [-d:Domain] [-o:TCPport] [-s:SharedSecret] [-r:] [-vnc:] [-a:0 |1|2] [-prxa:MRCproxyAddress] [-prxp:MRCproxyPort] [-prxsMRCproxySecret] [-v:] [-md:] [-i:n] [-x:] [-bh:CentralServerHostAddress] [- bpn: CentralServerPortNumber] [-bu:CentralServerUserName] [-bps:CentralServerUserPassword]"

我担心在 -p 选项中提供密码是不安全的,因为它基本上是纯文本。

这是我提供命令行参数的代码部分:

proc.StartInfo.Arguments = $"-c: -h: -x: -m:{TxtHostname} -d:{MainUI.Credentials.DomainName} -u:{MainUI.Credentials.UserName} -p:{LoginCredentials.Decrypt(MainUI.Credentials.EncryptedPassword)}";

是否有一种安全的方式将密码移交给进程内的 Dameware 应用程序?

非常感谢任何建议。

标签: c#securityprocesspasswordspassword-encryption

解决方案


这一般是不可能的。如果唯一的选择是通过命令行参数传递密码,那么您只有这个选项。

但是,如果目标应用程序支持另一种接收密码的方式,那将是可能的。这是特定于应用程序的,并不适用于每个应用程序。

由于我对 Dameware Mini Remote Control 不熟悉,因此我无法判断在这种特定情况下是否存在这样的选项。


推荐阅读