在以下代码中,系统在哪里存储$ Credential的值?
$Credential= $host.ui.PromptForCredential("","Please Enter Your domain username, eg. user1@contoso.com","","")
代码执行后该值会发生什么变化?
原谅最基本的问题......只是想确定我所制作的剧本的安全隐患。我也希望能找到专门解决这个问题的MSDN / TechNet文章。
非常感谢。
答案 0 :(得分:2)
首先,您应该使用Get-Credential
代替它 - 它更容易并完成同样的工作:
$credential = Get-Credential -Message "Please Enter Your domain username, eg. user1@contoso.com"
两种方法都会创建一个PsCredential
对象,其引用存储在$credential
中。密码以SecureString
的形式存储在内存中,以帮助保密,不写入磁盘,注册表等,除非您不要这样做:
PS C:\> $credential
UserName Password
-------- --------
domain\user System.Security.SecureString
因此,偶然尝试阅读是安全的。但是,它并不完全安全:
PS C:\> $credential.GetNetworkCredential() | Format-List *
UserName : user
Password : Password123
SecurePassword : System.Security.SecureString
Domain : domain