0

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

4

1 回答 1

1

在 Web 应用程序中运行代码,并让各种 PC 请求服务器代表它们运行此代码。

您真的要确保用户拥有 .NET 4.5 吗?(答案:没有)

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

顺便说一句,如果您使用的是 Gmail,您可以在用户的​​机器上放置一个 OAUTH 令牌,而不是您的密码,您可以撤销密码。它仍然是某种密码,但至少它不是您的密码。

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

于 2014-01-20T22:20:33.650 回答