AvoidUsingConvertToSecureStringWithPlainText

严重性级别:错误

默认状态:始终启用

DESCRIPTION

该规则通过命令检测参数的使用 AsPlainText ,该命令 ConvertTo-SecureString 绕过加密,将内存中的敏感信息暴露为明文,违背了 SecureString的初衷。

相反,可以通过加密通道获取安全凭证,或使用安全输入方式 Read-Host -AsSecureString ,确保敏感数据在整个生命周期内保持加密。

建议

如果你需要在无用户交互的情况下通过程序获取密码,可以考虑使用PowerShell 库的SecretStore模块,该模块提供加密的凭据存储和检索。

示例:

非符合性

$UserInput = Read-Host 'Please enter your secure code'
$EncryptedInput = ConvertTo-SecureString -String $UserInput -AsPlainText -Force

合规的

$SecureUserInput = Read-Host 'Please enter your secure code' -AsSecureString

配置规则

这个规则始终是启用的,不能配置。 请采用以下方法之一以避免使用此规则:

  • 创建一个自定义规则配置文件,只包含你想要的规则,或者排除你不想要的规则。
  • 在代码中添加相应的规则抑制属性,以抑制特定代码块的规则。 更多信息请参见使用 PSScriptAnalyzer 中的“抑制规则”部分。