【问题标题】:Change passwords every 90 days for ASP.Net to help PCIDSSASP.Net 每 90 天更改一次密码以帮助 PCI DSS
【发布时间】:2012-08-11 21:08:33
【问题描述】:

我正在完成 PCIDSS 评估。

要求状态密码必须至少每 90 天更改一次,并且与之前的 4 个密码中的任何一个都不同。

我不确定这是为了访问服务器,还是为了访问我在服务器上提供给用户的应用程序。

如果是后者 - 是否在 ASP.Net 3.5/4 Web 应用程序和 MVC4 Web 应用程序中强制执行此操作?

谢谢,马克

【问题讨论】:

  • 如果它有助于澄清其他人,我收到了来自 TrustWave 的回复:8.5.X 项目不适用于 Web 应用程序的用户,但适用于访问服务器。因此,这与实际服务器的安全性有关,而不是与登录 Web 应用程序的用户有关。希望这会有所帮助,马克

标签: asp.net asp.net-mvc pci-dss


【解决方案1】:

这是用于内部申请吗?如果是这样,请考虑与 LDAP/Active Directory 集成(假设正在用于您的网络密码)。然后可以处理密码规则(即跟踪以前使用过的内容,确保密码足够复杂且与以前的密码不同并强制更改频率)。这也意味着您的用户不必记住/保持同步多个密码,他们会感谢您的。

http://msdn.microsoft.com/en-us/library/ms180890(v=vs.80).aspx

【讨论】:

  • 您好 - 不,它是一个 Web 应用程序 - 所以我网站的客户登录到该网站,而不是通过 Windows。
  • 作为参考,我们这样做 - LDAP 服务器强制面向 Internet 的 Web 应用程序的密码策略。
【解决方案2】:

对于您的第一个要求,Asp.Net Membership 有一个属性MembershipUser.LastPasswordChangedDate,然后您可以像这样挂钩到您的登录:

        if (Membership.ValidateUser(userName, password))
        {
            MembershipUser theUser = Membership.GetUser(userName);
            if (theUser.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date)
            {
                // Inform user password expired + redirect user to change password screen
            }
            FormsAuthentication.SetAuthCookie(userName, rememberMe);
        }

您需要自己实现第二个要求(即不能与最后 4 个密码相同)。根据建议,创建一个新表 UserPasswordHistory 外键返回 aspnet_User.UserId,其中包含密码散列,每次用户更改他/她的密码时都会插入该散列。然后您可以将新密码的哈希值与之前的 4 进行比较,并相应地拒绝。

【讨论】:

    【解决方案3】:

    您可以将密码连同创建日期一起保存在另一个表中。这将是相当简单的

    【讨论】:

    • 我正在使用 ASP.Net 开箱即用的默认成员资格和角色提供程序。我希望我不是唯一一个试图遵守 PCI DSS 的 asp.net 开发人员,所以我确信肯定已经有解决方案了。谢谢,马克。
    【解决方案4】:

    '我不确定这是为了访问服务器,还是为了访问我在服务器上提供给用户的应用程序。

    通常 PCIDSS 专注于服务器,所以 .. 这是为了访问服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2016-09-28
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      相关资源
      最近更新 更多