2013-03-30 125 views
5

我不知道,如果这个问题是更适合于或#1超级用户或什么StackExchange网站...启动过程和隐藏命令行参数

基本上我从启动第三方应用程序C#与Process.Start与几个命令行参数。其中一个命令行参数是密码。

我认为我在我的应用程序的每个地方都确保密码的安全性非常好,除非在任务管理器中打开“进程”选项卡,您可以添加“命令行”列并查看所有这些命令行参数。

任何人都可以想出一种方式来启动一个进程,以某种方式隐藏命令行参数?这可能吗?

谢谢!

编辑:

这是一个Windows服务包装为plink.exe(SSH /腻子的东西)。它会提示输入密码,如果我不指定在命令行的密码,但我得到这个奇怪的警告:

Plink.exe - 3/30/2013 2:40:47 PM - Attempting keyboard-interactive authentication 
Plink.exe - 3/30/2013 2:40:47 PM - Server refused keyboard-interactive authentication 
Plink.exe - 3/30/2013 2:40:49 PM - [email protected]'s password: 

我已指定重定向标准输入,但也许我会继续寻找中看看我能不能解决它。另外,正如David Heffernan所建议的那样,我将进一步研究Pageant。谢谢大家 - 一旦找出更好的解决方案,我会发布更新!

+0

第三方应用程序经常更改吗?如在,新版本和所有。另外,这部署在哪里?在你的服务器上,还是客户PC上? – Filip

+0

我不认为它可以工作 - 但只是为了好玩 - 它是一个控制台应用程序?如果你不提供密码会怎么样?它是否吐出命令行再次输入?这是一个想法 - 你可以认为流输入到控制台(例如[this](http://stackoverflow.com/questions/6721396/repeatably-feeding-input-to-a-process-standard-input)) - 我如果我记得好的话,请认为这有效 - 但这是一个很长的关闭:) – NSGaga

+0

谢谢你们的评论/回答。基本上我正在编写一个Windows服务,它使用plink.exe(来自Putty.exe的创建者进行SSH连接)建立半永久SSH隧道。 –

回答

3

没有办法将命令行参数传递给进程,以便进程可以看到它,但系统中的其他所有内容都不能。

这是一个明显的缺陷,当程序允许密码作为参数传递时,通常是为了方便用户使用,而不关心窃听者。另外,精心设计的程序通常还会提供其他安全的身份验证方法。

1

如果您为新进程设置ACL,它应该限制谁可以读取命令行信息。一个空的ACL,没有授予权限,可能阻止使用任务管理器的管理员访问,尽管我的第一个猜测是它不会。 (请注意,一个空的安全描述符是同样的事,作为一个空的ACL。其中隐含了授予许可给大家,其他含蓄否认。)

当然,管理员总是可以的东西,店更换plink.exe密码的地方。所以我不确定担心管理员可以通过任务管理器看到什么是合理的!