Singleton确保密码安全

时间:2014-01-20 21:57:44

标签: c# security unsafe securestring

我正在制作一个小项目,要求我经常访问我的某个电子邮件帐户以发送电子邮件。话虽如此,我显然知道提前登录信息,为了保护密码不被多次创建成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上,而不仅仅是我自己。

1 个答案:

答案 0 :(得分:1)

在网络应用程序中运行代码,并让各种PC要求服务器代表他们运行此代码。

您真的想确保用户拥有.NET 4.5吗? (回答:不)

你可能会在较短的总时间内在Heroku上获得一个Rails应用程序。

顺便说一句,如果您使用的是Gmail,则可以在用户的​​计算机上放置OAUTH令牌而不是密码,您可以撤消该密码。它仍然是各种密码,但至少它不是您的密码。

https://developers.google.com/gmail/oauth_overview