programing

powershell의 읽기-호스트 기능을 사용하여 외부 서비스의 암호를 수락하려면 어떻게 해야 합니까?

telebox 2023. 8. 10. 18:44
반응형

powershell의 읽기-호스트 기능을 사용하여 외부 서비스의 암호를 수락하려면 어떻게 해야 합니까?

SOAP 서비스에 연결하는 스크립트가 있습니다.연결된 후에는 모든 명령을 보낼 때마다 사용자 이름/패스를 전달해야 합니다.문제는 읽기 호스트를 사용하여 이 작업을 수행할 때 암호가 일반 텍스트로 표시되고 셸에 남아 있다는 것입니다.

PS C:\Users\Egr> Read-Host "Enter Pass"
Enter Pass: MyPassword
MyPassword

-AsSecureString으로 숨기면 서비스가 시스템이기 때문에 더 이상 서비스에 값을 전달할 수 없습니다.보안.SecureString 개체:

PS C:\Users\gross> Read-Host "Enter Pass" -AsSecureString
Enter Pass: **********
System.Security.SecureString

제가 이것을 통과하면, 작동하지 않습니다.저는 비밀번호가 명확한 텍스트로 서비스에 전달되는 것에 대해 신경 쓰지 않고, 사용자가 비밀번호를 입력한 후에 사용자의 셸에 남아 있기를 원하지 않습니다.읽기-호스트 입력을 숨길 수 있지만 암호가 일반 텍스트로 저장되어 있습니까?그렇지 않다면 시스템을 통과할 수 있는 방법이 있습니까?보안.SecureString 개체를 일반 텍스트로 지정하시겠습니까?

감사해요.

$Password는 보안 문자열이며 일반 텍스트 암호가 반환됩니다.

[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password))

암호(입력)를 변수로 저장하여 서비스에 전달할 수 있습니다.코드가 스크립트나 함수로 실행되는 경우 암호가 포함된 변수는 암호가 완료된 후 삭제됩니다(이 변수는 임시로 저장됨).로컬 범위).콘솔에서 명령을 실행하는 경우(또는 스크립트의 닷 소스). .\myscript.ps1), 암호 변수는 세션 범위에 유지되며, 암호 변수는 삭제하거나 세션을 닫을 때까지 저장됩니다.스크립트가 실행된 후 변수가 제거되었는지 확인하려면 직접 삭제할 수 있습니다.다음과 같이:

#Get password in cleartext and store in $password variable
$password = Read-Host "Enter Pass"

#run code that needs password stored in $password

#Delete password
Remove-Variable password

변수가 범위에 저장되는 방법에 대한 자세한 내용은 _Scopes 정보를 참조하십시오.

PowerShell 버전 6.x+에는 다음과 같은 방법이 있습니다.

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

언급URL : https://stackoverflow.com/questions/15007104/how-can-i-use-powershells-read-host-function-to-accept-a-password-for-an-extern

반응형