【问题标题】:How to securely store service passwords with ASP.NET Membership?如何使用 ASP.NET Membership 安全地存储服务密码?
【发布时间】:2012-01-12 08:00:02
【问题描述】:

我正在为我的网站使用 ASP.NET MVC 3 成员资格,并具有默认值。这样用户的会员密码就被安全保存了。

我的服务要求用户输入他们使用的其他网络服务的用户名/密码。我从我的服务中访问这些服务。如果我保存用户的服务密码,我需要确保这些用户名/密码也被安全存储,这样如果有人入侵我的服务器,他们就不会被暴露。

我了解如何完成此操作的一般概念(使用他们作为密钥提供的 ASP.NET 成员身份密码的散列来加密用户名/密码)。但我不知道具体的 API 或正确的模式。

我还认为,真正做到这一点基本上是不可能的,因为如果有人入侵了我的服务,他们可以简单地使用自己的哈希来解密密码。我说的对吗?

假设我错了,并且可以做我想做的事,假设我的模型包含如下内容:

    public class MSExchangeSettings
    {
        [Required]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address for your Exchange account")]
        public string EmailAddress { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password for your Exchange account")]
        public string Password { get; set; }

        ...
    }

有人可以提供一个如何正确执行此操作的示例吗?

如果,这是不可能的,我将不得不求助于每次我想避免的每次都向用户询问 PW。当然,对于我使用的支持 OpenID 或 OAuth 的服务,我还有其他选择,但对于这个特定示例(Exchange),我需要一个用户名/密码。

【问题讨论】:

    标签: asp.net asp.net-mvc-3


    【解决方案1】:

    看看这个

    private static string GetPasswordHashed(string password) {
    
            var saltBytes = new byte[0x10];
            using (var random = new RNGCryptoServiceProvider()) {
                random.GetBytes(saltBytes);
            }
    
            var passwordBytes = Encoding.Unicode.GetBytes(password);
    
            var combinedBytes = saltBytes.Concat(passwordBytes).ToArray();
    
            byte[] hashBytes;
            using (var hashAlgorithm = HashAlgorithm.Create("HashAlgorithm")) {
                hashBytes = hashAlgorithm.ComputeHash(combinedBytes);
            }
    
            var PasswordHashed = Convert.ToBase64String(hashBytes);
            return PasswordHashed;
        }
    

    【讨论】:

    • 感谢您花时间发布此内容。但是,我不想简单地散列密码。正如我上面解释的那样,我需要在我的服务中使用未散列的密码,以便我可以使用其他服务(如 Exchange)进行身份验证。不过还是谢谢。
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 2016-04-01
    • 2013-04-24
    相关资源
    最近更新 更多