我需要在C#中编写一个控制台应用程序,它使用用户名和密码作为输入参数。
示例:mytool.exe --username foo --password bar
这样做很简单,但当然用户输入密码时屏幕上会显示密码。安全问题。
有没有可能以更安全的方式处理这个问题?然而,以下不是一个选项:
C:\>mytool.exe
Please enter username:
Please enter password:
应用程序应支持在没有用户交互的情况下调用,例如由cronjob定期运作。
答案 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);