我正在开发一个客户端应用程序,它使用带有基本身份验证的System.Net.Http.HttpClient来使用休息服务。为了提供我正在使用 System.Net.NetworkCredential 类的凭据。
从安全角度来看,我正在努力使我的应用程序尽可能安全,因此使用 System.Security.SecureString 来保存密码。我弄乱了一件奇怪的事情。 System.Net.NetworkCredential类。每当我设置NetworkCredential实例的SecurePassword属性并访问Password属性时,都会返回明文重复密码。这听起来像是一个安全问题。但老实说,我不确定密码是否在内存中保持为明文。
以下简单的测试方法说明了这种行为。
[TestMethod]
public void SecureNetworkCredentials_StoredAsPlainText()
{
// Arrange
String clearPassword = "mySecurePassword";
SecureString encryptedPassword = new SecureString();
foreach (var character in clearPassword.ToCharArray())
{
encryptedPassword.AppendChar(character);
}
// Act
NetworkCredential cred = new NetworkCredential();
cred.SecurePassword = encryptedPassword;
// Assert
Assert.AreNotEqual(cred.Password, clearPassword, "The password should not be the cleartext");
}
任何人都可以阐明这种行为或提供解决方法吗?