gpt4 book ai didi

powershell - 为自动电子邮件脚本存储帐户凭据(尤其是密码)的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-02 23:08:48 25 4
gpt4 key购买 nike

我正在编写一个简单的脚本 (windows powershell) 来发送自动电子邮件。计算机将始终运行以收集数据,然后定期发送电子邮件。发送电子邮件的一部分显然是收集凭据,并且由于它是自动化的,我们不能每次都有人在那里输入用户和密码。显而易见的解决方案是将信息存储在脚本中的 $user 和 $pass 变量中,但这对我来说似乎非常不安全,并且容易受到攻击。有没有更好的方法来做到这一点?也许使用用户地址设置一次安全的电子邮件连接而不必再次输入?我是 Powershell 的新手,所以我不太清楚执行此操作的最佳方法。目前我正在做的是:

$from = 'UserEmail@anotherEmail.com'
$to = 'someEmail@SomeMail.com'
$smtpServer = 'smtp-mail.outlook.com'
$smtpPort = '587'
$mailSubject = 'PowerShell Script Email Test'
$password = 'p@ssword'
$mailBody = 'body text'
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $from, $($password | ConvertTo-SecureString -AsPlainText -Force)
Send-MailMessage -To "$to" -From "$from" -Subject $mailSubject -SmtpServer $smtpServer -UseSsl -Credential $credentials -BodyAsHtml -Body $mailBody

如有任何建议或文档可供阅读,我们将不胜感激

最佳答案

您可能想要调查 Protect-CMSMessage cmdlet,它允许您 encrypt/decrypt data使用公钥密码术,这样只有拥有正确证书的用户才能解密密码。

如果这看起来有点矫枉过正,另一个更简单但可能不太安全的选项是将凭据导出到 XML 并在需要时读回它们。

要创建文件,请执行以下操作:

  1. 以运行脚本的用户身份登录
  2. 执行此命令:Get-Credential | Export-CliXml <path>\cred.xml
  3. 出现提示时输入要在脚本中使用的用户名/密码

生成的 XML 文件将安全地存储用户名和密码,并且可以像这样读回:

$cred = Import-CliXml <path>\cred.xml

然后您可以传递 $cred任何具有 -Credential 的 cmdlet参数。

密码以只能由同一用户在同一台​​计算机上打开的方式加密,因此如果其他人打开它,他们将无法访问详细信息。显然,如果他们可以以加密它的用户身份登录(或说服该用户运行“错误”脚本),那么他们将可以访问详细信息,但除此之外这是非常安全的。

第三种选择是使用 Windows 中的内置凭据管理器。这需要针对旧系统进行一些复杂的 .NET 互操作,但幸运的是,一些好人已经为您完成了艰苦的工作:

PowerShell Credentials Manager

这在 Windows 10 中更容易一些:

PasswordVault Class

关于powershell - 为自动电子邮件脚本存储帐户凭据(尤其是密码)的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com