1

在我的程序中,我需要在参数中询问用户密码:

[Cmdlet(VerbsCommon.Get, "MyTest"]
public class GetMyTest : PSCmdlet
{
    [Parameter(Mandatory=true)]
    public ? Password { get; set;}
}

我无法弄清楚密码使用的正确类型是什么。在另一个问题中: 如何安全地处理自定义编写的 PowerShell cmdlet 中的密码?

接受的答案要求在代码中使用 read-host,但我必须使用参数来询问此字段。

我也尝试使用 SecureString 作为密码,但我无法为此参数提供 SecureString,因为它将被自动接受为字符串,而不是安全字符串。

有什么方法可以实现以下用法:

Get-MyTest -Password ***** (where I actually type in 'abcde' but the input is masked.)
4

2 回答 2

1

通常所做的是将密码存储在字符串类型的变量中,然后以某种方式(SHA256、MD5 等)对其进行哈希处理以将其存储在数据库中(或对其进行比较并允许或不允许用户访问应用程序.

所以,我不确定是否有更好的类型。

于 2014-01-30T16:58:50.023 回答
1

无法使用星号保护命令行输入的特定部分 - 命令行输入只是纯文本。

选项

  • 将密码存储在文件中,使其在输入中不可见。现在的问题是如何保护该文件,但可能适用于某些情况 - 即指定类似于 web.config 中的加密设置的加密密码
  • 要求用户输入密码
  • 相反,密码要求用户使用该帐户登录(对于 Windows 身份验证)
  • 如果有某种方法可以获得短期令牌(即使用 OAUTH) - 您可以使用明文而不是密码
于 2014-01-30T17:30:28.397 回答