我正在制作一个小项目,要求我经常访问我的某个电子邮件帐户以发送电子邮件。话虽如此,我显然知道提前登录信息,为了保护密码不被多次创建成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上,而不仅仅是我自己。
答案 0 :(得分:1)
在网络应用程序中运行代码,并让各种PC要求服务器代表他们运行此代码。
您真的想确保用户拥有.NET 4.5吗? (回答:不)
你可能会在较短的总时间内在Heroku上获得一个Rails应用程序。
顺便说一句,如果您使用的是Gmail,则可以在用户的计算机上放置OAUTH令牌而不是密码,您可以撤消该密码。它仍然是各种密码,但至少它不是您的密码。