严重性级别:错误
默认状态:始终启用
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 中的“抑制规则”部分。