[英]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.