繁体   English   中英

存储加密密码 Powershell

[英]Storing encrypted password Powershell

我的 Powershell 脚本之一遇到了挑战。 这个想法是从客户端运行一个工具,它将使用 PID 杀死一些进程。 概念证明有效 - ps1 脚本被转换为 exe (PS2GUI),并且该工具成功地杀死了服务器上用户的 PID。


$credentials = New-Object System.Management.Automation.PsCredential("domain\user",$password)

$scriptBlockSQL = {
sqlplus.exe command
}

Invoke-Command -ComputerName "server" -Credential $credentials -scriptBlock $scriptBlockSQL

但是我有一点问题,因为我目前将密码作为明文存储在脚本中,这是非常不安全的——因为.exe 可以在不到几秒钟的时间内被反编译。

我已经尝试过使用加密字符串的 ConvertTo-SecureString,但是这会将它与用户帐户和 pc 联系起来——这不是一个选项。 密钥文件的使用也不是一种选择。

您对如何使脚本更安全和可用有什么建议吗? 或任何其他将以相同方式工作的解决方案?

谢谢!

好吧,当您使用 SecureString 加密密码时,您必须在代码或另一个文件中的某处定义密码。 所以这不是一个好主意。 然后您必须寻找一种有效保护脚本源代码的方法。

PS2GUI 将以可逆加密方式加密您的源代码,这意味着当 powershell 运行脚本时,引擎将解密代码。 由于使用对称密钥算法,它也很弱。

Powershell 脚本也以 Base64 格式加密,而 PS2GUI 也做了同样的事情。

我认为现在最好的方法是提示用户输入凭据。 像这样:

$password = Read-Host "Enter password" -AsSecureString

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM