在控制台应用程序中屏蔽密码参数

时间:2013-12-02 20:28:51

标签: c# passwords command-line-arguments

我需要在C#中编写一个控制台应用程序,它使用用户名和密码作为输入参数。

示例:mytool.exe --username foo --password bar

这样做很简单,但当然用户输入密码时屏幕上会显示密码。安全问题。

有没有可能以更安全的方式处理这个问题?然而,以下不是一个选项:

C:\>mytool.exe
Please enter username:
Please enter password:

应用程序应支持在没有用户交互的情况下调用,例如由cronjob定期运作。

2 个答案:

答案 0 :(得分:2)

详细说明SLaks的评论:

从标准输入(标准输入)获取密码。在您的cron作业中,使用输入重定向来传递密码,例如

  

MyConsoleProgram.exe< C:\ SomeSecureFolder \ Password.txt

@Ahmed提供的方法适用于从命令提示符交互使用程序的情况。

您的程序必须在允许访问Password.txt的安全上下文中运行,但是访问该文件应该仅限于有合法需要访问它的帐户。

答案 1 :(得分:0)

也许试试这个?这将掩盖输入的密码:

if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter)
{
   pass += key.KeyChar;
   Console.Write("*");
}
else
{
   if (key.Key == ConsoleKey.Backspace && pass.Length > 0)
   {
      pass = pass.Substring(0, (pass.Length - 1));
      Console.Write("\b \b");
   }
}

甚至是......

            int chr=0;
            string pass="";
            const int ENTER = 13;
            do
            {
                chr = Console.Read();
                Console.Write ('*');
                pass += (char)chr;
            }
            while (chr!=ENTER);