【问题标题】:Masking a password argument in a console application在控制台应用程序中屏蔽密码参数
【发布时间】:2013-12-18 16:28:53
【问题描述】:

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

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

这样做很容易,但是一旦用户键入密码,密码当然会在屏幕上显示。安全问题。

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

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

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

【问题讨论】:

标签: c# passwords command-line-arguments


【解决方案1】:

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

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);

【讨论】:

    【解决方案2】:

    详细说明 SLaks 的评论:

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

    MyConsoleProgram.exe

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 2011-04-09
      • 2011-12-29
      • 2011-11-17
      • 2021-09-27
      • 1970-01-01
      • 2018-05-18
      • 2016-10-12
      相关资源
      最近更新 更多