我正在做一个小项目,需要我经常访问我的一个电子邮件帐户来发送电子邮件。话虽如此,我显然提前知道了登录信息,并且为了保护密码不被多次创建为 SecureString,我创建了一个 Singleton 类:
public sealed class Sender
{
#region Private Member Variables
private readonly static Sender SingletonSender = new Sender(); // Singleton object
private readonly SecureString password;
private const String defaultEmailAddress = "xxxxxxxxxxxxx";
#endregion
#region Properties
public static Sender ReminderSender
{
get { return SingletonSender; }
}
#endregion
#region Constructors
private unsafe Sender()
{
Char[] passwordCharacters = {/* password characters */};
fixed (Char* pwChars = passwordCharacters)
{
password = new SecureString(pwChars, passwordCharacters.Length);
}
password.MakeReadOnly();
passwordCharacters = null;
}
#endregion
// Additional methods
}
现在,我想知道这是否是保护密码不被不必要地暴露的正确方法?此外,如果有人有更好的策略来解决这个问题,我很想听听。请注意,我的这个应用程序的目标是将它部署在各种 PC 上,而不仅仅是我自己。